2013-03-08 47 views
0

我經常發現自己做這樣的事情:在PHP中,什麼是更高效?首先聲明並覆蓋或通過if/else聲明?

$add_class = ''; 
    if($class){ 
     $add_class = " abc "; 
    } 

是更好地寫這樣的:

if($class){ 
     $add_class = " abc "; 
    } else { 
     $add_class = ''; 
    } 
+3

微優化的另一種情況。順便說一句 - 最好不要使用雙引號和單引號。 – 2013-03-08 03:07:08

+1

兩者之間的差異很明顯,但並不顯着...在這種情況下首先分配變量只會在$ class變量更可能是真實的情況下效率較低。 – zgr024 2013-03-08 03:11:19

+2

**這種優化級別浪費您的時間。**花時間考慮人類閱讀的最清晰的內容,而不是想象如何節省納秒會在應用程序中造成一些不同。 – 2013-03-08 03:15:06

回答

0

中的差異這兩者很明​​顯雖然不是實質性的...只有當$ class變量更可能是真實的時候,在這種情況下首先分配變量將效率較低。

0

不行,這不是更好。

你以前的做法更加乾淨和安全,以免將來犯下錯誤。

例如:您忘記只使用一個else,而您決定只在其他地方使用else,否則當您需要該變量時,您的代碼將崩潰。

2

考慮到如果您沒有定義add_class,PHP會拋出一個錯誤,您可能應該使用前者。

在性能方面(即使不是處理器會照顧):

//.000010013580322266 ms 
$class = 1; 
$add_class = ''; 
if($class){ 
    $add_class = " abc "; 
} 

//.000010013580322266 ms 
$class = 1; 
if($class){ 
    $add_class = " abc "; 
} else { 
    $add_class = ''; 
} 

還有第三種選擇,使用三元操作符(略更昂貴):

//.000010967254638672 ms 
$class = 1; 
$add_class = $class ? 'abc' : ''; 
+0

謝謝。至少有人真的*回答了問題*而不是告訴我浪費我的時間:) – 2013-03-08 03:26:53

+0

這種特殊情況只是過度優化;但前者是正確的方法。 – Kermit 2013-03-08 03:27:30

+0

它實際上取決於$ class的設置和第二次評估是否發生 – zgr024 2013-03-08 03:28:34