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

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

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

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

1 ответ

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

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

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

licensed under cc by-sa 3.0 with attribution.