ホームページ  >  記事  >  バックエンド開発  >  PHP の匿名関数内からグローバル変数を変更するにはどうすればよいですか?

PHP の匿名関数内からグローバル変数を変更するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-13 05:30:02930ブラウズ

How Can I Modify Global Variables from Within Anonymous Functions in PHP?

匿名関数内のグローバル変数へのアクセス

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。