2012-04-04 64 views
0

有誰能夠告訴我用 '===' 的差值作爲差異PHP

if (null === $this->getName()) 

if ($this->getName() === null) 

如果$這個 - >的getName已定義。

由於事先

+3

變量被切換,第二個變量在右括號之前有一個空格。 – 2012-04-04 05:53:22

+0

第一種方法是簡單地獲取比較值的方法 - 幫助開發人員快速解析代碼的含義,這對較長的行很有幫助。 – halfer 2012-04-04 05:59:51

回答

0

有兩個條件句之間沒有什麼區別,但是,它是一種常見的做法是將您首先檢查的價值,所以你不小心把一個條件檢查到一個賦值操作:

// Conditional 
if ($this->getName() === null) 

// Assignment 
if ($myName = null) 

// Avoids the confusion of either the above 
if (null === $this->getName()) 

如果變量爲空,您也可以使用PHP函數is_null進行測試。

0

===操作者在PHP是對稱的,所以這些都是相同的。

0

從我讀過的內容來看,唯一明顯的區別就是嚴格按照寫作的順序,在某些情況下可以更容易地遵循給定的測試。

我也認爲PHP首先評估第一項,但這不會產生任何差異,因爲它們都將被評估。

1

只要您使用的是=====,就沒有區別。

現在你可能想知道爲什麼有人在左側寫下所有的值。這是因爲我們的開發者傾向於忘記或者有錯字==,我們輸入=。這是意外的任務。

if($id=13){ 
    echo "foo"; 
} 

很難在上面的代碼中找到問題。本來應該寫成$id==13。那些編寫爲13==$id的人不必處理這個問題,因爲當他們忘記=它變成13=$id這是一個語法錯誤。這種方式幾乎不可能檢測到這種錯誤