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

Ita*_*vka 21 php

在以下代码中:

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

foreach(a() as $t){
    echo $t;    
}
Run Code Online (Sandbox Code Playgroud)

我们可以看到a()只被调用一次,似乎返回的值被缓存了...
但是后来我看到了这个争论(见问题的评论)我错过了什么?

gah*_*ooa 27

不,你的测试是确凿的.

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

一个for循环有三个参数,它确实评估每次迭代的第二次和第三次.