函数里面的循环声明?

时间:2011-02-18 18:47:45

标签: php performance readability

举个例子:

foreach(explode(' ','word1 word2 word3') as $v)
 echo $v;

据我所知,php每次爆炸功能都不会执行,但它只会在第一次执行。

这是真的吗?即使对于用户定义的函数,这是真的吗?

这段代码比这更好还是相同?

$genericVar = explode(' ','word1 word2 word3');
foreach($genericVar as $v)
 echo $v;

感谢

3 个答案:

答案 0 :(得分:5)

单独的代码更好,因为它提高了可读性并且维护代码会更容易。

永远不要将语句填入彼此只是为了删除一些行并使其看起来紧凑。当然,你可以保存一些字节,但是这些字节会在保留它的同时咬你。

答案 1 :(得分:1)

foreach使用给定数组的副本,因此该函数只执行一次。

foreach(explodecount(' ','A B C') as $v)
   echo $v;

function explodecount($a,$b){
    echo '@';
    return explode($a,$b);
}

// output: @ABC
// not @A@B@C

但这不起作用:

foreach(explode(' ','A B C') as &$v)
   echo $v;

在这里,你必须将爆炸的数组存储在一个单独的变量中。

答案 2 :(得分:0)

使用foreach时,这两段代码是等效的。爆炸功能只会被调用一次。

但是,这不适用于for循环,例如:

for($i = 0; $i < count($array); ++$i) {}

在此示例中,将在每次迭代时调用count函数。