Code Fix

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

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

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

 1  <?php
 2  $stock = 50;
 3  $sell = function($n) use (__________) {
                                   ^
 4      $stock -= $n;
 5      return $stock;
 6  };
 7  echo $sell(10);
 8  echo "\n" . $stock;
出力: 40 50期待: 40 40 (エラーにはなりません)

空欄を埋めて実行を通す

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

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

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

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

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