2

以前にも同様の質問をしたことがありますが、よくわからなかったので、より具体的な例を使用することにしました。

php は変数の結果を保存しますか、それとも実行する手順を保存しますか? なぜ私はそれに関数を保存するのか、戻り値を保存するのか、それとも単にプロシージャをコピーするのか疑問に思っています

いう:

    function foo($something)
{

    for loop
        {
       echo 'Something';

       }

   return $something;
}


$b = foo(5);

私が遭遇したことから、値を割り当てるだけで関数が実行されます。forループを2倍にして、内部にある可能性のあるものを2倍にしたくないので、これは望ましくありません。

4

2 に答える 2

2

PHP は厳格なプログラミング言語です。つまり、式は常に完全に評価されます。この線

$b = foo(5);

foo(5)割り当て前の値を計算します。PHP は、変数が使用されたとき、または使用された場合に評価されるサンクとしてそれを残しません$b

必要に応じて、次のようにクロージャーを作成することで、サンクに似たものを実現できます。

$b = function() { return foo(5); };

これはfoo(5)、その値が必要になるまで評価されません。値を取得するには、クロージャーを as として呼び出す必要があります$b()

于 2013-10-09T18:18:00.447 に答える