2013-02-28 124 views
2

爲什麼在下面的PHP代碼中反向執行布爾評估,而不是在最後加上「false」?反向布爾值評估

while (false !== ($obj = readdir($dh))) { 
    // do something 
} 

(從http://php.net/manual/en/function.unlink.php的用戶範例之一)

我見過的寫作評價這種方式在其他地方,但從來沒有真正理解爲什麼它的完成。我從來沒有學過計算機科學,所以這可能是一個真正的101問題。

+4

個人喜好。 – Eric 2013-02-28 17:43:49

+2

一些公司有編碼標準,其中常量(在這種情況下是錯誤的)被放在第一位。這是爲了避免錯誤分配而不是比較的錯誤。 – 2013-02-28 17:46:02

+1

[在PHP中比較變量位置]的可能重複(http://stackoverflow.com/questions/12560627/variable-position-in-comparision-in-php) – deceze 2013-02-28 17:54:58

回答

7

個人喜好,所以你不會錯誤地分配值而不是做比較。

例如

// doesn't generate an error, hard to track 
if($value = false) 
... 

// fatal error, you know that you did = instead of == 
if(false = $value)