Подтвердить что ты не робот

Использует ли функция в цикле foreach кэширует результат или вызывает функцию каждый раз?

В следующем коде:

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

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

Мы можем видеть, что() вызывается только один раз, и кажется, что возвращаемое значение кэшируется...
Но тогда я должен был увидеть эту дискуссию (см. Комментарии к вопросу) Я что-то не хватает?

4b9b3361

Ответ 1

Нет, ваш тест является окончательным.

Нет смысла оценивать первое выражение не более одного раза. Это основная предпосылка цикла foreach.

A for цикл имеет три аргумента, и он оценивает вторую и третью каждую итерацию.