哪两个更优化? I can't test it on my computer, I can't rely on it.
foreach($links as $link){
if($a){
//do something
}
if($b){
//do something
}
if($c){
//do something
}
if($d){
//do something
}
}
或:
if($a){
foreach($links as $link){
//do something
}
}
if($b){
foreach($links as $link){
//do something
}
}
if($c){
foreach($links as $link){
//do something
}
}
if($d){
foreach($links as $link){
//do something
}
}
答案 0 :(得分:3)
我认为第一个更好。我们说$a === true
和$b === true
。在第一个例子中,只执行一个循环,但在第二个例子中,相同的循环将被执行两次。
答案 1 :(得分:2)
这将取决于每个条件成立的可能性,以及您循环的集合的长度。 IF条件的开销很小,但是会在大型集合中累加,而foreach迭代器的开销略高,但如果其中一些条件很少是真的可以最小化
答案 2 :(得分:0)
1循环总是好于(可能)4。
答案 3 :(得分:0)
如果条件非常相似,使用switch()
声明,或使用elseif
$ a,$ b,$ c和$ d相互排斥可能更容易阅读。
答案 4 :(得分:0)
这两段代码并没有做同样的事情,因此你应该使用正确的代码,而不是仅仅根据速度选择。
要看到这一点,请考虑如果$a, $b
等多个为真,会发生什么。这两个片段将执行大量do somethings
,但顺序不同。
如果do somethings
可能会更改$a, $b
等值,也请考虑差异