Lambda 関数を使用して外部変数にアクセスする
PHP では、Lambda 関数内で外部変数にアクセスできるため、データ処理が柔軟になります。 。ただし、変数キャプチャの微妙な違いを理解することが重要です。
コード スニペットを考えてみましょう:
function fetch($query, $func) { $query = mysql_query($query); while($r = mysql_fetch_assoc($query)) { $func($r); } } fetch("SELECT title FROM tbl", function($r){ //> $r['title'] contains the title });
このコードにより、提供された関数を使用してデータベース行を処理できます。ただし、複数の行からデータを集計する必要がある場合は、ラムダ関数内で use キーワードを使用できます。
$result = ''; fetch("SELECT title FROM tbl", function($r) use (&$result) { $result .= $r['title']; }); echo $result;
use (&$result) を追加することで、ラムダ関数に外部の結果を使用するように指示します。 $result 変数を参照 (&) によって渡します。これにより、各行の値を 1 つの変数に連結できます。
ラムダ関数は早期バインディングを使用し、関数の呼び出し時ではなく定義時に外部変数の値を取得することに注意することが重要です。これにより、宣言と呼び出しの間に外部変数の値が変更されると、予期しない動作が発生する可能性があります。
以上がPHP の Lambda 関数はどのようにして外部変数にアクセスし、変更できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。