2

さまざまなループからいくつかの ID を取得し、別のページで ID を内破したいのですが、毎回ループから最後の ID だけを取得します。

最初のページのコード - 私のフォーム:

    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>'; 
        }

ここで私の内破の 2 ページ目のコード:

    // 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;

この結果セットを正常に取得する必要があります。

    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"
    }

では、なぜ implode が正しく機能しないのでしょうか?

誰でもアイデアはありますか?

事前にTHX

4

3 に答える 3

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']);
于 2013-05-07T09:31:09.620 に答える
1

間違った方法で配列に追加していますこれを試してください

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

今内破する

   $IMPCServices2 = implode(",", $CALLservices2);
于 2013-05-07T09:28:35.470 に答える