Ответ 1
Нет, ваш тест является окончательным.
Нет смысла оценивать первое выражение не более одного раза. Это основная предпосылка цикла foreach.
A for
цикл имеет три аргумента, и он оценивает вторую и третью каждую итерацию.
В следующем коде:
function a(){
echo 'a';
return array(1,2,3,4);
}
foreach(a() as $t){
echo $t;
}
Мы можем видеть, что() вызывается только один раз, и кажется, что возвращаемое значение кэшируется...
Но тогда я должен был увидеть эту дискуссию (см. Комментарии к вопросу) Я что-то не хватает?
Нет, ваш тест является окончательным.
Нет смысла оценивать первое выражение не более одного раза. Это основная предпосылка цикла foreach.
A for
цикл имеет три аргумента, и он оценивает вторую и третью каждую итерацию.