PHP の匿名関数内の外部変数にアクセスして変更するにはどうすればよいですか?

DDD
リリース: 2024-11-14 17:56:02
オリジナル
802 人が閲覧しました

How can I access and modify external variables within an anonymous function in PHP?

匿名関数をパラメータとして使用して外部変数にアクセスする

このシナリオには、データベース行を簡単に処理する便利な関数が含まれています。ただし、結果セットのすべてのタイトルを 1 つの変数に連結する必要があるという特定の要件が発生します。このため、グローバル キーワードを使用するあまり洗練されていないアプローチに依存せずにこれを実現するにはどうすればよいかという問題が生じます。

1 つの解決策は、クロージャ変数を使用することです。具体的には、 use キーワードを使用すると、クロージャが親スコープから変数を継承できるようになります。これは、すべての関数にわたって持続するグローバル変数とは異なります。

このソリューションを実装するには、コードを次のように変更できます。

$result = '';
fetch("SELECT title FROM tbl", function($r) use (&$result) {
   $result .= $r['title'];
});
ログイン後にコピー

use (&$result) を次のように追加します。匿名関数を使用すると、関数内から結果変数を参照および変更できます。 use キーワードは、結果変数への参照を効果的にクロージャに渡します。

このアプローチには早期バインディングが含まれることに注意することが重要です。これは、クロージャが関数宣言の時点で変数の値を使用することを意味します。関数呼び出しの時点ではありません (遅延バインディング)。この目的でクロージャを利用する場合は、これに留意する必要があります。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート