2013-02-28 123 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)