2016-09-27 210 views
-1

所以我的问题是,它循环两次,这不是我想要的所需输出。所以开始我有一个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']它工作正常,但问题是如果有两个或更多。 它只是增加了对第二个等等... ,我需要一种方法,以标识每个那些行的不同

+0

你能分享'$ rs_array ['package']'的内容吗? –

+0

对于共享'$ rs_array ['package'] = 1 @ @ @ @ @ @'的示例。你的代码完美地工作。你能确定你没有错过任何问题吗? –

+0

我模拟你的源代码,它工作正常。问题在于你提取数据的方式。根据我的观察,你打这两次。 –

回答

-2

您可以只需直接把他们的阵列上:

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; 

希望它有帮助。

+0

这不回答这个问题,OP在询问为什么他的循环中存在问题。 – Samundra

+0

谢谢你的回答,但它不起作用 –