上級 › クロージャの 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 ($balance)は値のコピーなので、クロージャの中で引き算しても外側の$balanceは減りません。連動させるには&$balanceのように参照で渡します。
次の問題