簡體   English   中英

Foreach循環循環兩次

[英]Foreach loop looping twice

所以我的問題是它循環了兩次,而不是我想要的輸出。因此,我首先有一個3復選框,每個值從1到3,並發送到數據庫並除以'@ | @ ' 標志。

$ rs_array ['package']的3個復選框的內容示例

1@|@2@|@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領域的菜鳥,所以請記住我仍然找不到解決方法或什至為何如此顯示。

- - - -問題 - - -

現在,我看到的問題是,如果我只有一行$ 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;

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM