反向布尔评估

Tom*_*Tom 2 php evaluation boolean coding-style operator-precedence

为什么在下面的PHP代码中反向完成布尔值评估,而不是在结尾处放置"false"?

while (false !== ($obj = readdir($dh))) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

(来自http://php.net/manual/en/function.unlink.php中的一个用户示例)

我已经看到了在其他地方编写评估的方式,但从未真正理解为什么要这样做.我从未学过计算机科学,所以这可能是一个真正的问题.

Mar*_*o D 7

个人偏好,所以你不要错误地分配价值而不是做比较.

例如

// doesn't generate an error, hard to track
if($value = false)
...
Run Code Online (Sandbox Code Playgroud)

// fatal error, you know that you did = instead of ==
if(false = $value)
Run Code Online (Sandbox Code Playgroud)