for循环最佳实践

6
据我所知,在for循环中,第二个和第三个表达式每次都会执行。
我一直认为在性能方面第二个选项更好,有人可以确认吗?
1)for($i=0;$i<=dosomething();$i++) [...] 2)
 $max = dosomething();
 for($i=0;$i<=$max;$i++) [...]
4个回答

5

不应该在循环定义内部调用函数,因为该函数会在每次迭代时执行。当你只有一个小循环时,效果可以忽略不计,但是如果你有数百或数千次迭代的循环,你一定会注意到。

但即使你只有一个小循环,这也是一个不好的实践。所以简而言之:不要这样做。


4

除非您的dosomething()函数返回不同的值并且可以在一次调用中完成,否则最好使用第二种方法。

$options = array(1,2,3,4,5); $element_count = count($options);

像count()这样在多个调用中返回相同值的函数可以保存在一个变量中,并在for循环中使用它。

如果您对性能非常严格,请使用++$i而不是$i++。


3
第二种方法始终执行得更好,特别是在doSomething()需要完成大量工作的情况下。如果您只执行几十个循环,并且doSomething()只返回一个本地变量,则不会有明显的差异。

-2

是的,我确认您可以搜索基准测试。

虽然我不知道如果它只是一个对象的getter是否正确。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接