2013-05-07 66 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

相关问题