foreach(func() as $item)...
Вышеуказанное позвонит только func()
, но почему? Что происходит точно?Как выполняется foreach в PHP?
foreach(func() as $item)...
Вышеуказанное позвонит только func()
, но почему? Что происходит точно?Как выполняется foreach в PHP?
foreach
не является структурой управления с условием, которое проверено до или после каждой итерации, например while
, for
или do … while
. Вместо этого он принимает массив, делает его копию внутри и повторяет это.
Массив может либо передаваться через переменную (наиболее часто используемый вариант):
foreach ($arr as $val) { /* … */ }
Или с другим выражением, которое возвращает массив при оценке:
foreach (array('foo','bar') as $val) { /* … */ }
function f() { return array('foo','bar'); }
foreach (f() as $val) { /* … */ }
Это не структура, что это такое? – user198729
http://www.php.net/foreach –
@ user198729: Я не сказал, что это не структура управления. Я просто сказал, что это не структура управления с условием, которое проверено на каждой итерации. – Gumbo
Нет необходимости вызывать функцию более одного раза - она должна возвращать массив, который можно повторить.
foreach принимает массив. Вы по сути вызываете func() один раз самостоятельно и передаете результирующий массив в конструкцию foreach, которая может зацикливаться на ней.
Можете ли вы это доказать? – user198729
Я думаю, что это очевидно, когда вы оцениваете цикл foreach –
, чтобы доказать, что он добавляет эхо или журнал к функции, которую вы вызываете в 'func()' – thetaiko
У вас есть примеры кода для показать? С реальным кодом мы можем помочь вам больше и дать лучший ответ. –