我最近要求应用程序架构师在工作中查看我编写的php
脚本,以自动执行我在帮助台部门每周执行的一些任务。
在他的评论中他说过
## Loops
Your loops are good, you didn't do anything bad like calling functions in the condition
for ($i=0; $i < count($array); $i++); is BAD
老实说,我之前从未想过在我的代码中这样做,但它让我想知道为什么会这么糟糕。
我认为这是因为,函数的结果可能是任何值,它似乎是创建无限循环的一种完美方式,并且通常会导致意外行为。
我尝试使用谷歌搜索,但找不到相关结果,所以我问:
为什么在for循环的条件下调用函数是不好的?
注意评论本身中的count($array)
对我来说是个好意思。当然,你只想缓存它。更具体地说,我的意思是使用其他更复杂的函数。
对于那些肯定会怀疑“为什么不只是问那个写它的人”的人,他超级忙,已经花时间帮助我,我不想太过分了与“现在,您能否向我解释所有评论?”
答案 0 :(得分:4)
for ($i=0; $i < count($array); $i++); //is not efficient
是的,使用起来效率不高,因为在每个被调用的迭代函数中都不好。您需要执行此功能一次。
$count = count($array);
for ($i= 0; $i < $count; $i++); //is much efficient
因为在此代码中count
函数将执行一次。在您之前的代码count
函数执行多次。
答案 1 :(得分:4)
我可以想到几个原因:
count()
示例中)答案 2 :(得分:3)
最好事先对值进行计数,因为如果将它放在循环中,则会在每次迭代时执行该函数以检查是否满足条件。
在这个例子中,count函数不是太重,也不会减慢你的程序速度(除非它是一个很大的数组),但要注意更大的函数。