Itay Moav -Malimovka
Itay Moav -Malimovka

Reputation: 53603

Does using a function in foreach loop caches the result, or calls the function each time?

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?

Upvotes: 25

Views: 4209

Answers (1)

gahooa
gahooa

Reputation: 137302

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.

Upvotes: 32

Related Questions