这段代码无效/慢吗?

时间:2012-05-08 04:46:16

标签: php performance foreach micro-optimization

  

可能重复:
  How is an array in a PHP foreach loop read?

如果我有这个功能:

function getList()
{
   $list = array();
   $list['foo'] = 'Foo';
   $list['bar'] = 'Bar';
   return $list;
}

然后我这样做:

foreach ( getList() as $item )
{
     echo $item.'<br>';
}

这段代码会比这样做慢吗?

$list = getList();
foreach ( $list as $item )
{
     echo $item.'<br>';
}

2 个答案:

答案 0 :(得分:5)

我确信在你的第一个例子中,foreach中的getList()函数只被评估一次。 因此,没有任何巨大的差异。

更新: 根据要求,这是我在php交互模式下进行的快速测试。

function getList() {
    echo 'a';
    return array(1,2,3);
}

foreach(getList() AS $item) {
    echo $item;
}

结果:a123

答案 1 :(得分:2)

试试这个

<?php
function getList()
{
    echo '<div>getList()</div>';
    $list = array();
    $list['foo'] = 'Foo';
    $list['bar'] = 'Bar';
    return $list;
}

foreach ( getList() as $item )
{
    echo $item.'<br>';
}
?>

你只会得到1个回声,这意味着getList()只被调用一次:)