0

内部に多くのものを含むフォームを作成し、 foreach を使用して情報を取得します。これまでのところ、foreach はうまく機能していますが、foreach の外部で情報を使用すると、奇妙なデータが得られます。

foreach とデータ抽出のみを使用したコードは次のとおりです。

foreach ($_POST['number3'] as $id1 => $array) {
        foreach ($array as $id2 => $alpha) {
                 foreach ($alpha as $id3 => $gama) {
                         $_SESSION['number3'][$id1][$id2][$id3] = $gama;
                        echo 'The value of $_SESSION["'.$id1.'"]["'.$id2.'"] ["'.$id3.'"] is '."'".$gama."'".' <br />';
                     }
                }
    }

    for ($i = 1; $i <= $_SESSION["number"]; $i++) {
        echo "Numero ";
        echo $i;
        echo "<br />";
        for ($j = 1; $j <= $_SESSION["number2_{$i}"]; $j++) {           
            echo "Letter ";
            echo $j;
            echo ": ";
            for ($id = 0; $id <= $_SESSION["id"]; $id++) {          
                echo "value: ";
                echo " ";
                echo $_SESSION['number3'][$i][$j][$id]; 
            }   
            echo "<br />";              
        }           
    }

foreach でエコーを使用すると、次のようなデータが得られます。

The value of $_SESSION["1"]["1"] ["0"] is '13:01' 
The value of $_SESSION["1"]["1"] ["1"] is '01:01' 
The value of $_SESSION["1"]["1"] ["2"] is '1' 
The value of $_SESSION["1"]["2"] ["0"] is '14:02' 
The value of $_SESSION["1"]["2"] ["1"] is '02:02' 
The value of $_SESSION["1"]["2"] ["2"] is '2' 
The value of $_SESSION["1"]["3"] ["0"] is '15:03' 
The value of $_SESSION["1"]["3"] ["1"] is '03:03' 
The value of $_SESSION["1"]["3"] ["2"] is '3' 

これは私が欲しいものなので、ここでは問題ありません。しかし、for ループを実行すると、次のようになります。

Numero 1
Letter 1: value: 13:01 value: 01:01 value: 1
Letter 2: value: 1 value: 0 value: 2
Letter 3: value: 15:03 value: 03:03 value: 3

文字2の場合、最初の2つの値のデータが間違っています。すべてが正常であるため、理由がわかりません。何か提案はありますか?ありがとう

4

1 に答える 1

0

$_SESSION['number3'][$id1][$id2][$id3] の値の割り当てに問題があるはずです。コードで「var_dump」または「var_export」を試して、$_SESSION の実際のデータ構造を見つけて、間違ったキーを割り当てていないか、どこかでこの値が変更されていないかを確認してください。

上記のコードだけでは、何も問題は見つかりませんでしたが、これは難しい問題ではないと確信しています。実行 & var_dump & デバッグしてみてください。

于 2013-07-19T03:10:59.203 に答える