私は最近、これらの無名関数の例を調べましたが、その違いは何ですか、なぜ2番目の関数 use keyword
が使用され、なぜ最初の1つが返され、2番目の戻り値が0:PHPで使用する匿名関数と匿名関数の違いは何ですか?
<?php
$result = 0;
// first function
$one = function()
{ var_dump($result); };
// second function with use
$two = function() use ($result)
{ var_dump($result); };
$three = function() use (&$result)
{ var_dump($result); };
$result++;
$one(); // outputs NULL: $result is not in scope
$two(); // outputs int(0): $result was copied
$three(); // outputs int(1)
?>
Refrenceリンク:php.iniの通知にある場合http://php.net/manual/en/functions.anonymous.php
例を実行しようとしましたか? – rndus2r
通知は無効になっていますか?その場合は、テストの目的でそれらをアクティブにします。 'use'を使うと、無名関数の範囲外の変数を参照することも、使用することもできます。つまり、無関係の機能には独自のスコープ(いくつかのスーパーグローバルを含む)があります。つまり、このスコープ外のものにはアクセスできません。したがって、宣言しなければ、変数はanon関数のスコープで使用されるため、NULLになります(通知をオンにした場合は、通知が得られます)。 '$ result'に直接アクセスすると、**を使用できますが、' $ result'は変更できません。 '&$ result'は参照を渡します。 – rndus2r
はい!私は言及と同じ結果を試みた。 –