Как выполняется foreach в PHP? - PullRequest
0 голосов
/ 19 февраля 2010
foreach(func() as $item)...

Выше будет звонить func() только один раз, но почему? Что именно происходит?

Ответы [ 3 ]

7 голосов
/ 19 февраля 2010

foreach принимает массив.По сути, вы сами вызываете func () и передаете полученный массив конструкции foreach, которая может зацикливаться на нем.

2 голосов
/ 19 февраля 2010

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) { /* … */ }
1 голос
/ 19 февраля 2010

Нет необходимости вызывать функцию более одного раза - она ​​должна возвращать массив, который может быть повторен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...