匿名関数内のグローバル変数へのアクセス
PHP では、匿名関数は通常、独自の分離されたスコープ内で動作し、定義された変数にアクセスする機能が制限されます。他の場所で。これは、グローバル変数を操作するときに障害になる可能性があります。
課題:
次の例を考えてみましょう:
$variable = "nothing"; functionName($someArgument, function() { $variable = "something"; }); echo $variable; //output: "nothing"
このシナリオでは、匿名関数はスコープ外の $variable の値を変更できないため、出力が残ります。 "何もありません。"
解決策: クロージャ
この課題を克服するには、クロージャを使用できます。クロージャは、スコープが終了した後でも、そのスコープを囲んでいるスコープの変数へのアクセスを保持する関数です。
匿名関数内でグローバル スコープの変数を変更するには、次の構文を使用します。
functionName($someArgument, function() use(&$variable) { $variable = "something"; });
匿名関数内で「use(&$variable)」を使用すると、グローバル $variable への参照が関数に渡されます。 「&」は、変数への参照を渡していることを示し、関数内でその値を変更できるようになります。
これで、匿名関数が実行されると、$variable の値を正常に変更できます。変更された値は関数のスコープ外に保持されます。
以上が匿名関数は PHP のグローバル変数をどのように変更できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。