我通常写成这样:
if ($myvar == null)
但有时我会看到这样的内容:
if (null == $myvar)
我记得有人告诉我后者更好,但我不记得为什么。
您知道哪一个更好,以及为什么吗?
谢谢, 丹
如果您意外地忘记其中一个 =
,第二个就会报错。
if ($myvar = null)
这将会把null
赋给$myvar
并对结果进行if
检查。
if (null = $myvar)
这会尝试将$myvar
的值分配为null
并因为你不能分配给null
而导致错误。
if (1 == 0 && 1 == 1)
然而,你所拥有的将始终被评估。因此顺序并不重要,已经提到的约定是正确的方式。
这不是关于顺序的问题,而是要避免意外跳过一个=
,这将导致赋值而不是比较。当使用常量优先约定时,意外跳过会抛出错误。
我曾经看到后者被用来帮助避免程序员错误,例如:
if($myvar = null)
这将始终返回true,而
if(null = $myvar)
会抛出一个错误。
你可以使用 is_null()
代替。
在编程中,使用赋值运算符=
代替相等运算符==
是一个常见的错误:
if($myvar = null)
这实际上将null
分配给$myvar
。 捕获此逻辑错误的一种方法是在左侧使用常量,以便如果您使用=
代替==
,则会出现错误,因为常量(在此情况下为null
)不能被分配值: