3

一些编码指南规定您应该将您正在测试的变量放在条件的末尾:

// Incorrect
if($isSomething === FALSE) { // Do something }

// Correct
if(FALSE === $isSomething) { // Do something }

我知道有些程序员有在这样的情况下初始化变量的坏习惯:

if($results = $db->getResults() { // Do something if results exist }

因此,我可以想象拥有这个违反直觉的规则的唯一原因是防止错误的重新初始化,以防您不小心在 PHP 中只使用了一个等号 (=) 而不是两个等号。

还有其他原因吗?

4

1 回答 1

5

在您想要比较的情况下,您不能意外地分配一个值。这使得发现小错误变得更加容易。

if (FALSE = $isSomething)将引发错误,因为您无法重新分配常量,而
if ($isSomething = FALSE)将始终返回 true,并且您可能很长时间都不会注意到该错误。

于 2012-04-15T15:40:59.833 回答