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 cal
No, your test is conclusive.
It makes no sense for it to evaluate the first expression any more than once. It's the basic premise of a foreach loop.
A for loop has three arguments, and it does evaluate the second and third each iteration.
for