$a = array(1, 2, 3, 4); foreach ($a as &$value) { $value = $value * 2; }
上記のように書くと、$a はarray(2, 4, 6, 8)になりますが、&を取り除いて
$a = array(1, 2, 3, 4); foreach ($a as $value) { $value = $value * 2; }
このように書くと、$aの中身は書き換わりません。
これはどうしてなのでしょうか。
レファレンスの意味がよくわかりません。
(追記①)
アドバイスありがとうございます。
「$a=&$c」のような使い方では、$cが$aのエイリアスのように振る舞うと考えれば理解できたのですが、foreachで「$a as &$value」のように書かれた時に何がどうなっているのかわかりませんでした。
$a = array(1, 2, 3, 4); foreach ($a as $value) { $value = $value * 2; echo $value.'<br>'; var_dump($a); }
上記のように「&」をつけない場合は$valueは2倍されていますが、$aは2倍されていません。
逆に「foreach ($a as &$value)」のように、「&」をつけると、$aも2倍されます。
「$a as &$value」と書くと$aは$valueを参照するようになると考えればいいのでしょうか?
回答4件
あなたの回答
tips
プレビュー