Ответ 1
Да, они в основном эквивалентны.
Единственное различие заключается в том, что первая добавит переменную в текущую область (т.е. если вы в глобальной области).
Из любопытства есть два варианта ниже функционально эквивалентных?
$array_variable = function_that_creates_an_array();
foreach($array_variable as $a){
do_something()
}
против.
foreach(function_that_creates_an_array() as $a){
do_something()
}
Просто хочу, чтобы я не вызывал функцию на каждой итерации или что-то немое.
Спасибо!
Да, они в основном эквивалентны.
Единственное различие заключается в том, что первая добавит переменную в текущую область (т.е. если вы в глобальной области).
Два фрагмента будут считывать массив одинаково, без переоценки функции.
Тем не менее во втором фрагменте вы не сможете получить доступ к полному массиву во время цикла, так как у вас нет ссылки (переменной) на нем.
Просто, да, они функционально одинаковы.