Code Fix

上級クロージャの use($var) は値をコピーする(参照ではない) › パターン3

クロージャの use($var) は値をコピーする(参照ではない)

無名関数でuse($var)と書くと、その時点の$varの値がコピーされてクロージャに閉じ込められます。

 1  <?php
 2  $balance = 100;
 3  $withdraw = function($n) use (____________) {
                                        ^
 4      $balance -= $n;
 5      return $balance;
 6  };
 7  echo $withdraw(30);
 8  echo "\n" . $balance;
出力: 70 100期待: 70 70 (エラーにはなりません)

空欄を埋めて実行を通す

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

クロージャの use($var) は値をコピーする(参照ではない)

クロージャの中で変更しても、外側の変数には影響しません。外側の変数と連動させたい場合はuse(&$var)と参照で渡す必要があります。

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

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