PHP foreach(...)问题

时间:2011-02-15 04:11:09

标签: php arrays foreach

我想知道是否使用

foreach(get_some_array() as $boo) do_something...

慢于

$arr = get_some_array();
foreach($arr as $boo) do_something...

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

2 个答案:

答案 0 :(得分:6)

不,该功能只会被调用一次。 您可以通过执行以下操作来验证这一点:

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

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

foreach (get() as $v) {
    echo $v . "\n";
}
?>

这里输出:

murilo@mac:regionais$ php -f teste.php 
getting
a
b
c
d

答案 1 :(得分:1)

$ arr = get_some_array();从理论上讲,这个等式增加了零时间,因此它在这里使用的确不会产生任何影响。