在以下代码中:
function a(){
echo 'a';
return array(1,2,3,4);
}
foreach(a() as $t){
echo $t;
}
我们可以看到a()只被调用一次,似乎返回的值被缓存...
但后来我看到this debate (see comments on the question)我错过了什么?
答案 0 :(得分:27)
不,你的测试是确凿的。
评估第一个表达式不止一次是没有意义的。这是foreach循环的基本前提。
for
循环有三个参数,它会评估每次迭代的第二次和第三次。