2012-08-07 30 views
1

我有這個簡單,如果代碼:我應該使用ELSEIF或多個if引導的從句

哪個更好,與esleif做或做兩個獨立的IFS?

if(is_home() && $currentpage == ''){ 
    $catname = 'cars'; 
} elseif(is_home() && $currentpage != '' && is_page_template('models.php')){ 
    $catname = 'newcars'; 
} 

兩個separete if引導的從句:

if(is_home() && $currentpage == ''){ 
    $catname = 'cars'; 
} 
if(is_home() && $currentpage != '' && is_page_template('models.php')){ 
    $catname = 'newcars'; 
} 

請問的訂單,如果事項?如果在第一次之前我能放置第二個嗎? 這個問題應該是PHP如何將條件從更具體到更一般的對待? 你應該總是從更具體的開始,一直工作到一般? 或PHP可以排序他們?

,因爲我已經配發,如果的:)

+7

否則IFS是if語句相互排斥的。多個if不是。 – 2012-08-07 23:18:16

回答

5

這取決於你想要什麼樣的行爲的第二個版本會爲我簡單:

如果使用elseif只有第一匹配塊將被執行。

$foo = $bar = true; 
if($foo) { /* executed */ } 
elseif($bar) { /* not executed */ } 

當使用單獨的if列有:,所有匹配塊將執行:

$foo = $bar = true; 
if($foo) { /* executed */ } 
if($bar) { /* also executed */ } 

如果條件是不同的,即只有一個是有史以來真的,那並不重要。但是,通過使用elseif,您可以避免無用的檢查,因爲只要一個條件評估爲true,就不需要檢查其他條件。

+0

這就是我想知道的,所以如果第一個是一個特定的查詢,第二個是更一般的,如果我使用兩個ifs,那麼一般可以覆蓋更具體的一個 – webmasters 2012-08-07 23:20:13

+0

好的例子!簡單但非常豐富的 – 2012-08-07 23:41:26

1
if (is_home()) { 

    if ($currentpage == '') { 

     $catname = 'cars'; 
    } 
    else if (is_page_template('models.php')) { 

     $catname = 'newcars'; 
    }  
} 
+0

這將如何幫助OP? – 2012-08-07 23:21:10

+2

我喜歡這種方式,爲代碼帶來更多邏輯 – webmasters 2012-08-07 23:21:39

+0

我認爲它很醜,因爲它增加了更多的嵌套代碼。它根本不回答這個問題。 – Jocelyn 2012-08-07 23:42:53

3

爲了腳本優化,我會推薦elseifs,以避免運行多餘的不必要的條件。

如果可能的話,我會建議使用switch/case語句(在這裏你可以檢查單個變量的值)。從減少混亂的角度來看,它們更乾淨,更容易維護。多

一個問題if語句(而不是ELSEIF語句)是它使調試問題更加複雜。你怎麼知道第二個陳述不是凌駕於第一個陳述上,或者你的條件邏輯對每一個陳述都是正確的?使用多個if增加了一個條件覆蓋另一個的功能的可能性。開始在這些if語句中添加多個變量,它會開始傷害你的大腦。

1

我會去的,

if(is_home()) { 
    if($currentpage == '') { 
     $catname = 'cars'; 
    } 
    elseif(is_page_template('models.php')) { 
     $catname = 'newcars'; 
    } 
}