问题foreach在函数返回的数组上

Jie*_*eng 1 php loops

我不知道我是否这样做

foreach (func_to_return_array() as $item) { ... }
Run Code Online (Sandbox Code Playgroud)

它会func_to_return_array()多次调用(数组长度)吗?如果它,我猜它会更好用

$arr = func_to_return_array();
foreach ($arr as $item) { ... }
Run Code Online (Sandbox Code Playgroud)

cle*_*tus 7

它只会打func_to_return_array()一次电话.例:

foreach (foo() as $v) {
  echo "$v\n";
}

function foo() {
  echo "Called foo\n";
  return range(1, 5);
}
Run Code Online (Sandbox Code Playgroud)

输出:

Called foo
1
2
3
4
5
Run Code Online (Sandbox Code Playgroud)