假设我有一个返回1的函数和一个等于该函数的var,这样我可以稍后调用它。
function number() {
return 1;
}
$var = number();
echo $var;
响应$var
10次会调用number()
10次吗?我只希望将返回值设置为变量。实际的函数非常重,可能需要几秒钟才能执行,因此只执行一次是有益的。我不想让它执行所有我回显的10次。我怎样才能做到这一点呢?
No。变量不"调用函数"。您正在调用函数并将其结果赋值给变量。这种情况只发生一次。函数返回赋值的值;你没有赋值函数。
易于证明:
function number() {
echo 'function!';
return 1;
}
echo 'assigning!';
$var = number();
echo $var;
echo $var;
echo $var;
将函数的返回值存储在变量中。函数将只被调用一次并且变量将保留该值直到脚本执行结束(除非您手动取消设置)。你可以重复使用它,只要你想。
证明:
$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)
a)试试吧。这比问快多了。
b) $var将得到number
返回的第一个结果c)你可能会错误的lambda函数像这样每次调用都是一个新的方法调用
$var = function () { return 1};
echo $var();