2012-05-08 35 views
3

可能重複:
php == vs === operator當使用===,== ==以上,=以PHP

我明白===之間的區別,!====!=在PHP中,但我總是發現自己傾向於===!==,但我沒有真正的原因。在PHP.net的文檔中,通常會有'警告'聲明您應該使用===來檢查某些內置函數的返回值。所以我的問題是爲什麼我應該使用一組操作符而不是另一個?

非常感謝:)。

+0

適當時使用它們。如果你瞭解差異,那麼問題是什麼?用盡我所有的近距離投票,但這是一個非常不具建設性的問題。 – kapa

+0

有沒有更合適的網站來問這樣的問題呢?有程序員。堆棧交換? – ale

+2

我對'programmers.SE'的常見問題不太熟悉。我的問題與你的問題是,它可能會徵求意見,辯論,爭論,投票或擴大討論。與個人無關。 '==='和'=='都有它們的位置,所以你通常不能說'相對於另一個'使用**'**。 – kapa

回答

5

如果自動類型轉換不能轉換您(或將來需要維護您的代碼的開發人員)期望的方式(以及類型對話的規則通常會導致意外的誤報和錯誤否定複雜並且在不同的語言中有所不同,所以這種混淆有很大的範圍)。

除非您需要需要類型的對話,否則請務必使用三字符版本。

3

===!==只有在您關心兩個操作數是相同類型的情況下才應該使用。

否則 - 使用==!= - 因爲隱式轉換爲我們的愛PHP的

+4

@ThiefMaster:我喜歡它,因爲否則編程將成爲連續鑄件的地獄,因爲PHP從所有第三方數據源獲取數據作爲字符串。 PS:我總是知道變量是什麼類型的,所以可能的隱式轉換根本就不是問題 – zerkms

+2

@ThiefMaster:它並不可怕,你是過度化的:-) PS:我更喜歡'if($ string)'到' if(strlen($ string)> 0)'因爲它對我來說很重要。你會選擇哪一個? – zerkms

+0

@Thief'false =='false''是'false'。 '!'false'=== true'也是'false'。 – deceze

1

===!==,如果你使用的可能返回0作爲全成和FALSE當它失敗的功能是非常重要的。在PHP 0中也等於FALSE,這會導致函數失敗的結論。

if(somefunction() == 0) { 
    // Do something 
} 

假設somefunction返回0時函數成功退出,和FALSE時失敗,上面的代碼段將當所述返回碼是假觸發。

使用===阻止你的是,因爲它僅將觸發如果響應真的是0

3

最常見的原因是那麼函數返回數/串,並可能在錯誤返回false。如果0是有效結果,並且假指示錯誤,則必須使用===進行區分。但是,總是使用===可能會導致意外的行爲,例如,返回null並且被認爲是無效的值,但類型檢查僅用於false。因此,如果數據來自您自己的源代碼/ PHP函數,並且您知道無效值恰好爲1,請使用嚴格檢查。在大多數情況下,==是一個安全的選擇,但是,特別是如果您處理的是外部數據,這是不受您控制的。