上級 › クロージャの use($var) は値をコピーする(参照ではない) › パターン1
クロージャの use($var) は値をコピーする(参照ではない)
無名関数でuse($var)と書くと、その時点の$varの値がコピーされてクロージャに閉じ込められます。
1 <?php 2 $total = 0; 3 $add = function($n) use (__________) { ^ 4 $total += $n; 5 return $total; 6 }; 7 echo $add(5); 8 echo "\n" . $total;
出力: 5
0期待:
5
5 (エラーにはなりません)
空欄を埋めて実行を通す
use ($total)は定義時点の値をコピーするだけです。クロージャの中で加算しても外側の$totalには影響しません。外側と連動させるにはuse (&$total)と参照で渡す必要があります。
次の問題