PHP foreach(...)问题

Ale*_*lex 1 php arrays foreach

我想知道是否使用

foreach(get_some_array() as $boo) do_something...
Run Code Online (Sandbox Code Playgroud)

比...慢

$arr = get_some_array();
foreach($arr as $boo) do_something...
Run Code Online (Sandbox Code Playgroud)

我的意思是如果数组有这么多元素(在第一个例子中),get_some_array()会被调用10000000次?

Mur*_*los 6

不,这个功能只会被调用一次.您可以通过以下方式验证这一点

<?php
function get()
{
    echo "getting\n";

    return array('a', 'b', 'c', 'd');
}

foreach (get() as $v) {
    echo $v . "\n";
}
?>
Run Code Online (Sandbox Code Playgroud)

在这里它输出:

murilo@mac:regionais$ php -f teste.php 
getting
a
b
c
d
Run Code Online (Sandbox Code Playgroud)