关于PHP中的内存和变量赋值

时间:2013-10-09 18:06:12

标签: php variables memory variable-assignment

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

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

说:

    function foo($something)
{

    for loop
        {
       echo 'Something';

       }

   return $something;
}


$b = foo(5);

从我遇到的只是分配值执行函数。我不想要的,因为我不想通过双重for循环,并将内部的内容加倍。

2 个答案:

答案 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

中的函数