2010-06-16 40 views
4

假設我有一個總是字符串的變量。==和=== php中的運算符

現在把下面的代碼:

if($myVar === "teststring") 

注:$myVar將永遠是一個字符串,所以我的問題是

這是更快/最佳使用===(恆等式)或==(平等)?

+0

我會在這種情況下使用==,因爲您並不在乎$ myVar的類型。我非常肯定速度是相同的(它是如此微不足道,即使在一個巨大的循環)。 – AlexV 2010-06-16 13:03:46

+0

如果您決定使用'==',則反轉條件('「teststring」== $ myVar')有助於捕獲可能的拼寫錯誤(如果您錯過了兩個等號中的一個,則會更改' $ myVar'並且有一個永遠爲真的if條件!)。 – MartinodF 2011-11-15 03:52:48

回答

6

對身份的測試總是更快,因爲PHP不必鍵入Juggle來評估比較。但是,我認爲速度差異處於納秒級,完全可以忽略不計。

相關閱讀:

+3

+1。出於好奇,我只是運行一個快速測試,在循環中放入一個'=='語句和一個'===',以便執行1000萬次。兩者之間沒有真正的區別。多次重複測試'=='有時更快,有時更慢,但我們真的在談論1毫秒的差異...... – nico 2010-06-16 14:15:58

+1

@nico這將取決於是否觸發類型轉換。您可能已經測試過比較相同類型的變量的情況(或者相等運算符甚至不嘗試轉換的情況)。 – Artefacto 2010-07-08 12:50:16

0

一般來說,當我編碼時,我使用== over ===,但是,使用標識更精確,而且稍微更快(差異最小)。

兩者之間的差異可能與您需要的無關。

+2

恕我直言'=='應該避免,因爲它需要更多的人力來正確閱讀如何類型雜耍影響語句(特別是在PHP中)。使用'==='它可以是完全匹配,也可以不是。 – 2010-06-16 13:06:32

+0

我同意,並且在仔細研究之後 - 我會修改我的陳述。 – 2010-06-16 13:09:27

2

===會稍快一些,但更重要的是,它會強制$myVar是一個字符串,所以你不必擔心它可能是其他類型的影響。