假设我有一个返回1的函数和一个等于函数的var,所以我稍后可以调用它。
function number() {
return 1;
}
$var = number();
echo $var;
将回复$var
10次来电number()
10次?我只想将返回值设置为变量。实际的功能非常繁重,可能需要几秒钟才能执行,因此只执行一次是有益的。我不希望它执行所有我回应的10次。我怎样才能做到这一点?
答案 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();