在foreach循环中使用函数是否缓存结果,或每次调用函数?

时间:2009-12-12 01:40:47

标签: php

在以下代码中:

function a(){
    echo 'a';
    return array(1,2,3,4);
}

foreach(a() as $t){
    echo $t;    
}

我们可以看到a()只被调用一次,似乎返回的值被缓存...
但后来我看到this debate (see comments on the question)我错过了什么?

1 个答案:

答案 0 :(得分:27)

不,你的测试是确凿的。

评估第一个表达式不止一次是没有意义的。这是foreach循环的基本前提。

for循环有三个参数,它会评估每次迭代的第二次和第三次。