Code Fix

中級 › foreachで&を使った後、unsetを忘れると値が壊れる › パターン5

foreachで&を使った後、unsetを忘れると値が壊れる

foreach ($arr as &$v) で配列を参照渡しで回すと、ループ終了後も$vは配列の最後の要素への参照を保持し続けます。

 1  <?php
 2  $data = [2, 3, 4];
 3  foreach ($data as &$d) {
 4      $d *= 3;
 5  }
 6  _____________
          ^
 7  foreach ($data as $d) {
 8      echo $d . " ";
 9  }
10  echo "\n" . implode(",", $data);
出力: 6 9 9 6,9,9期待: 6,9,12 (エラーにはなりません)

空欄を埋めて実行を通す

広告
広告スロット(未設定)

foreachで&を使った後、unsetを忘れると値が壊れる

unset($v)を忘れると、次に$vという名前でループを回したときに最後の要素が上書きされます。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)