Foreach循环循环两次
所以我的问题是,它循环两次,这不是我想要的所需输出。所以开始我有一个3复选框,每个值1到3发送到数据库,是除以'@ @ @'符号。的内容为$ rs_array [“包”] 3个复选框Foreach循环循环两次
实施例拾取
[email protected]|@[email protected]|@3
唐氏这里是它的foreach循环
if(strpos($rs_array['package'], '@|@') == true){
$array = explode('@|@', $rs_array['package']);
foreach ($array as $myArray) {
if ($myArray==1) {
$myArray = "Starter";
}
elseif ($myArray==2) {
$myArray = "Developing";
}
elseif ($myArray==3){
$myArray = "Matured";
}
$my_Array[] = $myArray;
}
//unset($my_Array);
$my_Arrays = implode(',', $my_Array);
}
else{
$my_Arrays = $rs_array['package'];
if($my_Arrays==1){
$my_Arrays = "Starter";
}
elseif ($my_Arrays==2) {
$my_Arrays = "Developing";
}
elseif ($my_Arrays==3) {
$my_Arrays = "Matured";
}
else{
$my_Arrays = "";
}
}
echo $my_Arrays;
这里向下是回波的输出当我选择其中三个
Starter,Developing,Matured,Starter,Developing,Starter,Developing,Matured
而这里是当我选择其中两个
Starter,Developing,Matured,Starter,Developing
我仍然在这个领域的foreach一个新人这么做记住,我仍然想不通一个解决办法,甚至为什么它显示为such.Much帮助表示赞赏
------ - 问题-----
现在我看到的问题是,如果我只有一行$ rs_array ['package']它工作正常,但问题是如果有两个或更多。 它只是增加了对第二个等等... ,我需要一种方法,以标识每个那些行的不同
您可以只需直接把他们的阵列上:
if(strpos($rs_array['package'], '@|@') == true){
$array = explode('@|@', $rs_array['package']);
foreach ($array as $myArray) {
if ($myArray==1) {
$my_Array[] = "Starter";
} elseif ($myArray==2) {
$my_Array[] = "Developing";
} elseif ($myArray==3){
$my_Array[] = "Matured";
}
}
//unset($my_Array);
$my_Arrays = implode(',', $my_Array);
}
echo $my_Arrays;
希望它有帮助。
这不回答这个问题,OP在询问为什么他的循环中存在问题。 – Samundra
谢谢你的回答,但它不起作用 –
你能分享'$ rs_array ['package']'的内容吗? –
对于共享'$ rs_array ['package'] = 1 @ @ @ @ @ @'的示例。你的代码完美地工作。你能确定你没有错过任何问题吗? –
我模拟你的源代码,它工作正常。问题在于你提取数据的方式。根据我的观察,你打这两次。 –