Tec*_*hie 19 php performance loops control-structure nested-loops
第一关,我是PHP的新手.我一直在使用for循环,while循环,foreach循环脚本.我想知道
我坚持的代码想知道要使用哪个循环.
for($i=0;$i<count($all);$i++)
{
//do some tasks here
for($j=0;$j<count($rows);$j++)
{
//do some other tasks here
}
}
Run Code Online (Sandbox Code Playgroud)
很明显我可以用while编写上面的代码.希望有人能帮助我找出哪个循环应该更好用.
Pek*_*ica 34
哪一个更适合表现?
没关系.
选择循环的标准是什么?
如果您只需要遍历对象或数组的所有元素,请使用foreach.您需要的 案例for包括
foreach更方便,因为它不需要你设置计数,并且可以通过任何类型的成员 - 无论是对象属性还是关联数组元素(for不会捕获).通常最好的可读性.
当我们在另一个循环中循环时应该使用哪个?
两者都很好; 在您的演示案例中,这foreach是最简单的方法.
Rei*_*ica 13
哪一个更适合表现?
谁在乎?这不会很重要.永远.如果这些微小的优化很重要,那么你就不会使用PHP.
选择循环的标准是什么?
选择一个最容易阅读的,最不可能在将来导致错误.当你循环整数时,for循环很棒.当你像一个数组一样循环一个集合时,foreach很棒,当你需要循环直到你"完成"时,while这很棒.
这可能也取决于样式规则(例如,在Python中,你几乎总是想要使用foreach循环,因为这是"在Python中完成的方式").我不确定PHP的标准是什么.
当我们在另一个循环中循环时应该使用哪个?
无论哪种循环类型最有意义(参见上面的答案).
在你的代码中,for循环对我来说似乎很自然,因为你有一个定义的开始和停止索引.
小智 7
查看http://www.phpbench.com/以获取一些PHP基准测试的参考.
for循环通常非常快.不要在for中包含你的计数($ rows)或count($ all),在外面这样做:
$count_all = count($all);
for($i=0;$i<$count_all;$i++)
{
// Code here
}
Run Code Online (Sandbox Code Playgroud)
将计数($ all)放在for循环中使得它为每个循环计算此语句.首先计算该值,然后在循环中使用计算使其仅运行一次.
for或一个while循环并不重要,迭代次数决定了执行时间.for循环.如果要在某个条件下运行和停止,请使用while循环