据我所知,每次在for循环中都会执行第二个和第三个表达式。
我总是理所当然地认为性能明智的第二个选项是推荐的,有人可以确认吗?
1)for($i=0;$i<=dosomething();$i++) [...]
2)
$max = dosomething();
for($i=0;$i<=$max;$i++) [...]
答案 0 :(得分:5)
您不应该在循环定义中调用函数,因为该函数将在每次迭代时执行。当你只有一个小循环时,效果可以忽略不计,但是如果你有一个数百或数千次迭代的循环,你肯定会注意到。
但即使你只有一个小循环,这只是不好的做法。总而言之:不要。
答案 1 :(得分:4)
除非你的dosomething()函数返回不同的值并且可以一次完成,否则最好使用第二种方法。
$ options = array(1,2,3,4,5); $ element_count = count($ options);
在多个调用中返回相同值的count()函数可以保存在一个变量中,并在for循环中使用它。
如果您对性能非常严格,请使用++ $ i而不是$ i ++
答案 2 :(得分:3)
第二种方法总是要更好地进行预处理,特别是如果在doSomething()中有大量的工作要做。如果你只做了几十个循环,并且doSomething()只是返回一个局部变量,那么它就不会产生显着的差异。
答案 3 :(得分:-2)
是的我确认您可以根据需要搜索基准。
虽然我不知道它是否真的只是一个物体的吸气剂