匿名関数内のグローバル変数へのアクセス
PHP では、匿名関数は本質的にグローバル変数にアクセスできません。これらの匿名関数内から外部変数を操作しようとすると、問題が発生する可能性があります。
例:
次のコードを考えてみましょう:
$variable = "nothing"; functionName($someArgument, function() { $variable = "something"; });
このコードを実行すると、匿名関数はグローバル変数にアクセスできないため、$variable は「何もない」ままになります。 scope.
解決策: クロージャ
この問題に対処するために、PHP ではクロージャの概念が導入されています。クロージャを使用すると、匿名関数内の囲みスコープから変数を操作できます。クロージャを作成するには、匿名関数宣言に use キーワードを追加します。
functionName($someArgument, function() use(&$variable) { $variable = "something"; });
この場合、use キーワードにはアンパサンド (&) が付いており、$variable 変数が渡されることを示しています。参照。これにより、匿名関数がグローバル $variable を変更できるようになります。
注: グローバル変数が確実に変更されるように、クロージャ内の変数を参照するときはアンパサンド (&) を使用することが不可欠です。 、変更は匿名関数の外部に反映されます。
以上がPHP の匿名関数内からグローバル変数を変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。