2013-05-07 61 views
2

我想從不同的循環中獲取一些id並在另一個頁面上破壞theidès,但我每次只從循環中獲取最後一個id。Implode不能從不同的崗位上工作

這裏從第一頁的代碼 - 我的方式:

while($rowSCA = mysql_fetch_array($ResCSCA)) { 
    $libSCA = $rowSCA['lib_service']; 
    $idSCA = $rowSCA['id_service']; 
     echo '<tr>'; 
     echo "<td class='HSCA'>".$libSCA."</td><td class='HSCA'><input type='checkbox' class='HSCA' name=\"centre[".$idSCA."]\"/></td>"; 
     echo '</tr>'; 
     echo '<input type="hidden" name="SCA['.$idSCA.']" value="'.$idSCA.'"></input>'; 
     }  
    ... 
    while($rowSRiA = mysql_fetch_array($ResCSRiA)) { 

    $libSRiA = $rowSRiA['lib_service']; 
    $idSRiA = $rowSRiA['id_service']; 


     echo "<tr class='HSRiA'>"; 
     echo "<td class='HSRiA'>".$libSRiA."</td><td class='HSRiA'><input type='checkbox' class='HSRiA' name=\"centre[".$idSRiA."]\"/></td>"; 
     echo '</tr>'; 
     echo '<input type="hidden" name="RiA['.$idSRiA.']" value="'.$idSRiA.'"></input>'; 
     } 

這裏從我破滅的第二頁中的代碼:

// First implode operation 
    foreach($_POST['SCA'] as $Cservices) 
     { 
      @$CALLservices = array($Cservices); 
     } 

     $IMPCServices = implode(",", $CALLservices); 

    $CNewServices = $IMPCServices; 

    // Second implode operation 
    foreach($_POST['RiA'] as $Cservices2) 
     { 
      @$CALLservices2 = array($Cservices2); 
     } 

     $IMPCServices2 = implode(",", $CALLservices2); 

    $CNewServices2 = $IMPCServices2; 

    echo $CNewServices; 
    echo '<br>'; 
    echo $CNewServices2; 

我得normaly此ResultSet:

94,100,101,104 
    93 

但我只得到

104 
    93 

但我仍的var_dump告訴我,我得到我所有的ID的正確:

array(4) { 
     [94]=> 
     string(2) "94" 
     [100]=> 
     string(3) "100" 
     [101]=> 
     string(3) "101" 
     [104]=> 
     string(3) "104" 
    } 
    array(1) { 
     [93]=> 
     string(2) "93" 
    } 

那麼,爲什麼破滅工作不正常?

有人有想法嗎?

THX提前

+1

你overwritting。嘗試使用'$ CALLservices = array()',然後'$ CALLservices [] = $ Cservices;'。 – BlitZ 2013-05-07 09:28:16

+0

或'$ IMPCServices2 = implode(「,」,$ _POST ['RiA']);' – Waygood 2013-05-07 09:29:27

回答

1

要添加到在錯誤的方式排列試試這個

$CALLservices2 = array(); 
    $i = 0; 
    foreach($_POST['SCA'] as $Cservices) 
    { 
     $CALLservices2[$i] = $Cservices; 
     $i++; 
    } 

現在做破滅

$IMPCServices2 = implode(",", $CALLservices2); 
+1

是不是隻是'$ IMPCServices2 = implode(「,」,$ _POST ['SCA']);'? – Waygood 2013-05-07 09:30:43

+0

對我非常有用非常感謝您 – achillix 2013-05-07 09:41:15

+0

@achillix歡呼快樂編碼 – 2013-05-07 09:52:28

2

當你這樣做:

foreach($_POST['SCA'] as $Cservices) 
    { 
     @$CALLservices = array($Cservices); 
    } 

每通過循環的時間你被覆蓋將變量$CALLservices與僅包含循環的當前元素的數組一起使用。如果你想使所有元素的數組,你應該做的:

$CALLservices = array() 
foreach($_POST['SCA'] as $Cservices) 
    { 
     $CALLservices[] = array($Cservices); 
    } 

不過,你不需要這個循環的。你可以只寫:

$CALLservices = $_POST['SCA'] 

複製數組。爲什麼你甚至需要複製數組?你可以這樣寫:

$IMPCServices = implode(",", $_POST['SCA']); 
+0

+1說明 – Waygood 2013-05-07 09:33:51

+0

作品對我來說也非常好!非常感謝你!!! – achillix 2013-05-07 09:42:01

1

foreach循環中,你沒有獲取數組中的所有值。

有不同approches,但這裏是一個基本的:

foreach($_POST['SCA'] as $Cservices) { 
     @$CALLservices[] = $Cservices; 
} 

$IMPCServices = implode(",", $CALLservices); 

享受....

+0

它的作品也很好。 THX非常 – achillix 2013-05-07 09:43:21

相關問題