PHP:比较中运算符的顺序为null

时间:2010-10-25 13:51:28

标签: php operators

我通常写这个:

if ($myvar == null)

但有时我会读到这个:

if (null == $myvar)

我记得有人告诉我后者更好但我不记得为什么。

你知道哪个更好,为什么?

谢谢, 丹

6 个答案:

答案 0 :(得分:11)

如果您不小心忘记了其中一个=,则第二个会出错。

if ($myvar = null)

这会将null分配给$myvar并对结果执行if检查。

if (null = $myvar)

这会尝试将$myvar的值分配给null并提出错误,因为您无法分配到null

答案 1 :(得分:1)

这不是关于订单,而是关于避免意外跳过一个=,这将导致分配而不是比较。使用常量优先约定时,意外跳过会引发错误。

答案 2 :(得分:1)

这个人可能提到的是关于条件陈述的微观优化。例如,在下文中,第二个条件不会被评估为第一个已经失败的条件。

if (1 == 0 && 1 == 1)

但是,您所拥有的将始终被评估。因此,顺序并不重要,已经提到的惯例是要走的路。

答案 3 :(得分:0)

我已经看到后者用于帮助避免程序员错误,例如:

if($myvar = null)

这将始终返回true,而

if(null = $myvar)

会抛出错误。

答案 4 :(得分:0)

您可以改为使用is_null()

答案 5 :(得分:0)

使用赋值运算符=代替等于运算符==是一个常见的错误:

if($myvar = null)

实际上将null分配给$myvar。捕获此逻辑错误的一种方法是在LHS上使用常量,这样如果使用=代替==,则会出现常量错误(null case)无法赋值: