2

次のPHPコードでは、末尾に「false」を付けるのではなく、ブール評価が逆に行われるのはなぜですか?

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

( http://php.net/manual/en/function.unlink.phpのユーザー例の1つから)

私は他の場所で評価を書くこの方法を見たことがありますが、なぜそれが行われるのか本当に理解していません。私はコンピュータサイエンスを勉強したことがないので、これは本当の101の質問かもしれません。

4

1 に答える 1

7

個人的な好みなので、比較する代わりに誤って値を割り当てないようにします。

例えば

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

しかし

// fatal error, you know that you did = instead of ==
if(false = $value)
于 2013-02-28T17:45:46.163 に答える