Передача функции возвращает результат в цикл foreach

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

$array_variable = function_that_creates_an_array();
foreach($array_variable as $a){
    do_something()
}

против.

foreach(function_that_creates_an_array() as $a){
    do_something()
}

Просто хочу, чтобы я не вызывал функцию на каждой итерации или что-то немое.

Спасибо!

Ответ 1

Да, они в основном эквивалентны.

Единственное различие заключается в том, что первая добавит переменную в текущую область (т.е. если вы в глобальной области).

Ответ 2

Два фрагмента будут считывать массив одинаково, без переоценки функции.

Тем не менее во втором фрагменте вы не сможете получить доступ к полному массиву во время цикла, так как у вас нет ссылки (переменной) на нем.

http://www.php.net/manual/en/control-structures.foreach.php

Ответ 3

Просто, да, они функционально одинаковы.