私は単純な多次元配列を持っています。私はそれを変更します-つまり。それにデータを追加します - 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.