这段代码无效/慢吗?

Cli*_*ote 0 php performance foreach micro-optimization

可能重复:
如何读取PHP foreach循环中的数组?

如果我有这个功能:

function getList()
{
   $list = array();
   $list['foo'] = 'Foo';
   $list['bar'] = 'Bar';
   return $list;
}
Run Code Online (Sandbox Code Playgroud)

然后我这样做:

foreach ( getList() as $item )
{
     echo $item.'<br>';
}
Run Code Online (Sandbox Code Playgroud)

这个代码会比这样做慢吗:

$list = getList();
foreach ( $list as $item )
{
     echo $item.'<br>';
}
Run Code Online (Sandbox Code Playgroud)

wyr*_*red 5

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

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

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

foreach(getList() AS $item) {
    echo $item;
}
Run Code Online (Sandbox Code Playgroud)

结果:a123