如果var调用一个函数,那么每次回显var都会执行吗?

时间:2014-03-20 14:49:26

标签: php

假设我有一个返回1的函数和一个等于函数的var,所以我稍后可以调用它。

function number() {
    return 1;
}

$var = number();
echo $var;

将回复$var 10次来电number() 10次?我只想将返回值设置为变量。实际的功能非常繁重,可能需要几秒钟才能执行,因此只执行一次是有益的。我不希望它执行所有我回应的10次。我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:3)

没有。变量不“调用函数”。您正在调用该函数并将其结果分配给变量。这只发生一次。该函数返回分配的;你没有分配这个功能。

易于证明:

function number() {
    echo 'function!';
    return 1;
}

echo 'assigning!';

$var = number();
echo $var;
echo $var;
echo $var;

答案 1 :(得分:2)

您正在将函数的返回值存储在变量中。 该函数只会被调用一次,变量将保存该值直到脚本执行结束(除非您手动取消设置)。您可以根据需要多次重复使用它。

证明:

$count = 0;
function number() {
    global $count;
    $count++;
    return 1;
}

$initial = $count;
$var = number();
$final = $count;
printf('Function was executed %d time(s)', $final-$initial);

$initial = $count;
echo $var;
echo $var;
echo $var;
echo $var;
$final = $count;
printf('Function was executed %d time(s)', $final-$initial);

输出(echo输出除外):

Function was executed 1 time(s)
Function was executed 0 time(s)

答案 2 :(得分:0)

a)试一试。它比询问更快。

b)$ var将以数字

返回第一个结果

c)你可能错误的这样的lambda函数每次调用都是一个新的方法调用

$var = function () { return 1};
echo $var();