我通常写这个:
if ($myvar == null)
但有时我会读到这个:
if (null == $myvar)
我记得有人告诉我后者更好但我不记得为什么。
你知道哪个更好,为什么?
谢谢, 丹
答案 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)无法赋值: