2012-05-02 94 views
2

哪個會更適合這兩個? I can't test it on my computer, I can't rely on it.多個foreach vs多個if內部foreach

foreach($links as $link){ 
    if($a){ 
     //do something 
    } 
    if($b){ 
     //do something 
    } 
    if($c){ 
     //do something 
    } 
    if($d){ 
     //do something 
    } 
} 

OR

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 
    } 
} 

回答

3

我第一個想到的是更好的。比方說$a === true$b === true。在第一個例子中,只執行一個循環,但在第二個例子中,相同的循環將被執行兩次。

+0

怎麼來的,這是社會維基? – Michelle

+0

@JackSpairow因爲我的鼠標。大聲笑 – Leri

0

1環總是比(潛在的)更好4.

2

這將取決於每個條件爲真發生的可能性,而你循環通過集合的長度。 IF條件的開銷很小,但是會累計超過一個較大的集合,而foreach迭代器的開銷略高,但如果其中一些條件很少真的可以最小化

0

如果條件非常類似地,使用switch()聲明或者如果$ a,$ b,$ c和$ d是互斥的,使用elseif可能會更容易閱讀。

0

這兩個代碼片段不會做同樣的事情,因此您應該使用正確的,而不是僅僅基於速度選擇。

要看到這一點,請考慮如果$a, $b等多於一個是真的會發生什麼情況。這兩個片段將執行大量do somethings,但順序不同。

還要考慮如果do somethings差可日的$a, $b值變化等