0

私は単純な多次元配列を持っています。私はそれを変更します-つまり。それにデータを追加します - foreach ループで、参照によってその要素にアクセスします。

 $array = array(
    array('id' => 12, 'name' => 'John1', 'surname' => 'Smith1'),
    array('id' => 13, 'name' => 'John2', 'surname' => 'Smith2'),
    array('id' => 14, 'name' => 'John3', 'surname' => 'Smith3'),
    array('id' => 15, 'name' => 'John4', 'surname' => 'Smith4'),
 );

 foreach($array as &$a) {
    $a['middlename'] = 'Robert';
 }

$array以下は、完全に順序が整っていることを示しています。

print('<pre>'.print_r($array,true).'</pre>');結果:

    Array
    (
        [0] => Array
            (
                [id] => 12
                [name] => John1
                [surname] => Smith1
                [middlename] => Robert
            )

        [1] => Array
            (
                [id] => 13
                [name] => John2
                [surname] => Smith2
                [middlename] => Robert
            )

        [2] => Array
            (
                [id] => 14
                [name] => John3
                [surname] => Smith3
                [middlename] => Robert
            )

        [3] => Array
            (
                [id] => 15
                [name] => John4
                [surname] => Smith4
                [middlename] => Robert
            )

    )

しかし、ループしている間、内部ポインターは最後の要素の直前で停止します。

 foreach($array as $a) {
     print('<pre>'.print_r($a['id'],true).'</pre>');
 }

出力:

 12
 13
 14
 14

何が起こっているのかヒントはありますか?

更新:私が選んだ答えは正しいです。さらに、これを見つけました: PHP Pass by reference in foreach Thx, SO.

4

2 に答える 2

0

念のため、$array のような変数名は使用しないことをお勧めします...

于 2013-09-16T23:27:34.673 に答える