foreach(func() as $item)...
上述内容只会调用func()
一次,但为什么?究竟发生了什么?
答案 0 :(得分:7)
foreach接受一个数组。你本质上是自己调用func(),并将结果数组传递给foreach结构,它可以遍历它。
答案 1 :(得分:2)
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) { /* … */ }
答案 2 :(得分:1)
不需要多次调用该函数 - 它应该返回一个可以迭代的数组。