In the following code:
function a(){
    echo 'a';
    return array(1,2,3,4);
}
foreach(a() as $t){
    echo $t;    
}
We can see a() is called only once, and it seems the returned value is cached...
But then I got to see this debate (see comments on the question) am I missing something?
 
     
    