PHPのforeachで参照渡し
投稿日: 2011/12/11 更新日: 2018/06/05
PHP
PHP の foreach は、値渡しなのでループの中で中身を書き換えることはできません。
foreachで値渡し
$array = array('apple', 'banana', 'caviar');
foreach ($array as $key => $value) {
if ($value == 'caviar') {
$value = 'cocoa'; // キャビアをココアに変更
}
}
var_dump($array);
実行結果は次の通りです。
array(3) {
[0]=>
string(5) "apple"
[1]=>
string(6) "banana"
[2]=>
string(6) "caviar" // ← キャビアのまま
}
foreachで参照渡し
そこで、$value を&$value とし、参照渡しで変数生成させるようにしてみます。
$array = array('apple', 'banana', 'caviar');
foreach ($array as $key => &$value) {
if ($value == 'caviar') {
$value = 'cocoa'; // キャビアをココアに変更
}
}
var_dump($array);
実行結果は次の通りです。
array(3) {
[0]=>
string(5) "apple"
[1]=>
string(6) "banana"
[2]=>
&string(5) "cocoa" // ← ココアに変更された!!
}