2015-09-05 39 views
0

想象一下,你有一個名爲$ varName的變量。它可以取兩個值中的一個:'aaa'或'bbb'。那麼,哪種說法是最佳的,爲什麼?Php:if或者

1) 

if ($varName === 'aaa') { 
/* Code for 'aaa' */ 
} else { 
/* Code for 'bbb' */ 
} 

2) 

if ($varName === 'bbb') { 
/* Code for 'bbb' */ 
} else { 
/* Code for 'aaa' */ 
} 

3) 

if ($varName == 'aaa') { 
/* Code for 'aaa' */ 
} else { 
/* Code for 'bbb' */ 
} 

4) 

if ($varName == 'bbb') { 
/* Code for 'bbb' */ 
} else { 
/* Code for 'aaa' */ 
} 

UPD:變量取 'AAA' 值超過ofter 'BBB'

+1

在這裏閱讀http://www.w3schools.com/php/php_operators.asp – Shehary

+1

我覺得我在這裏做一些學校的工作大聲笑。 1 - 因爲===匹配var的值和類型,儘管所有4個答案都可以工作,因爲PHP寬鬆輸入! – mic

+0

@mic抱歉,請參閱UPD) – lezhni

回答

1

如果你肯定知道$ varname的獲取(串) 「AAA」 更多的時候則選擇(1)將是最佳原因有兩個:

  1. 運算符「===」不轉換數據。有關更多詳細信息,請參閱this answer
  2. 代碼將不經常進入else部分。

PS。性能差異不大,它更多的是可讀性。

+0

不知道PHP內部,我認爲,除非方法退出最後的「隱含然後」,跳轉到其他代碼將有完全相同的結果。爲什麼:在條件爲true的情況下,繼續流程而不跳轉,但跳過else代碼,如果爲false,則直接將「隱式的」代碼直接跳轉到else,但不跳轉到最後。所以,當使用if時,你總是會跳躍,唯一的區別是*當跳轉發生時。可能會因爲優化而被破壞。所以(1)和(2)應該是等價的。 – fbiazi