2

我之前问过类似的问题,但我真的不清楚,所以我决定使用一个更具体的例子。

php是保存变量的结果还是保存运行它的过程?为什么我想知道如果我在其中存储一个函数,它是存储返回值还是只是复制过程

说:

    function foo($something)
{

    for loop
        {
       echo 'Something';

       }

   return $something;
}


$b = foo(5);

从我遇到的只是分配值执行功能。我不想这样做,因为我不想通过双倍的 for 循环并做双倍的可能在里面。

4

2 回答 2

2

PHP 是一种严格的编程语言,这意味着表达式总是被完全评估。线

$b = foo(5);

计算foo(5)赋值前的值;PHP 不会将它作为一个thunk来评估何时或是否$b使用该变量。

如果你愿意,你可以通过创建一个闭包来实现类似于 thunk 的东西,如下所示:

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

在需要它的值之前,这不会评估foo(5),然后要获得值,您必须将闭包称为$b().

于 2013-10-09T18:18:00.447 回答
2

在 PHP 中,您可以同时拥有两者(存储结果或函数代码)

如果你写:

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

这将意味着 - 执行函数 foo 并将结果存储到 $a

如果你写:

$a = function()
{
    return 5;
};
$a();

这将意味着 - 将函数的代码存储到变量 $a 中,然后执行存储在 $a 中的函数

于 2013-10-09T19:29:18.687 回答