2016-09-27 209 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

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