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

匿名関数は PHP のグローバル変数をどのように変更できますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-13 15:01:02225ブラウズ

How Can Anonymous Functions Modify Global Variables in PHP?

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

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

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