我之前问了一个类似的问题,但我真的不清楚所以我决定使用一个更具体的例子。
php是保存变量的结果还是保存程序来运行它?为什么我想知道如果我在其中存储一个函数,它是存储返回值还是只复制过程
说:
function foo($something)
{
for loop
{
echo 'Something';
}
return $something;
}
$b = foo(5);
从我遇到的只是分配值执行函数。我不想要的,因为我不想通过双重for循环,并将内部的内容加倍。
答案 0 :(得分:2)
PHP是strict programming language,这意味着表达式总是被完全评估。这条线
$b = foo(5);
在分配之前计算foo(5)
的值;当使用变量$b
时,PHP不会将其作为thunk进行评估。
如果你愿意,你可以通过创建一个类似于thunk的东西来实现类似的东西:
$b = function() { return foo(5); };
这不会在需要值之前评估foo(5)
,然后要获取值,必须将结果称为$b()
。
答案 1 :(得分:2)
在PHP中,您可以同时拥有(存储结果或函数代码)
如果你写:
function foo()
{
return 5;
}
$a = foo();
这意味着 - 执行函数foo并将结果存储到$ a
如果你写:
$a = function()
{
return 5;
};
$a();
这意味着 - 将函数的代码存储到变量$ a中,然后执行存储在$ a
中的函数