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

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-19 00:44:02992ブラウズ

How Can I Modify a Global Variable from Within an Anonymous Function in PHP?

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

PHP では、匿名関数は通常、外側の関数のローカル スコープ、または次の場合はグローバル スコープを継承します。関数の外側で定義されます。ただし、匿名関数内からグローバル スコープの変数を変更しようとすると、問題が発生する可能性があります。

グローバル スコープの変数の変更

次の例を考えてみましょう。

$variable = "nothing";

functionName($someArgument, function() {
  $variable = "something";
});

echo $variable;  // Output: "nothing"

匿名関数内で $variable を変更しようとしても、出力はそのままになります "何もない。"これは、匿名関数が独自のスコープを作成し、グローバル スコープを直接継承しないためです。

解決策: クロージャ

この制限に対処するには、クロージャを利用できます。クロージャを使用すると、変数を囲んでいるスコープから新しいスコープにキャプチャできます。匿名関数内からグローバル スコープの変数を変更するには、次の構文を使用します。

functionName($someArgument, function() use (&$variable) {
  $variable = "something";
});

変数名の前に use を追加し、& で参照することで、変数を参照によってキャプチャするクロージャを作成します。匿名関数内での変更を可能にします。

結論

使用クロージャを使用すると、匿名関数内からグローバル スコープの変数にアクセスして変更できるようになり、匿名関数内に新しいスコープを作成するという制限が克服されます。参照によって変数をキャプチャすることにより、匿名関数のスコープ外に保持される変更を実行できます。

以上がPHP の匿名関数内からグローバル変数を変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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