PHP中哪种方法更好,使用null==还是==null?

3

我经常看到 PHP 开发者使用类似以下代码:

if(null == $var){

}

当我使用时

if($var == null){

}

这两个是不同的吗?有没有理由使用每一个?还是在任何情况下都只是个人选择的问题?


1
"$var==null" 是标准写法,两种写法没有区别,只是我们通常在右边写值。 - M A SIDDIQUI
2
第一个的优点在于,如果出现意外的拼写错误(例如(null = $var)),你会得到一个语法错误,否则可能会通过并造成混淆。 - arkascha
3
我_强烈_不同意。 - arkascha
1
@arkascha请提及原因,这样我也可以知道。 - M A SIDDIQUI
它们完全相同。 - apokryfos
显示剩余3条评论
2个回答

5

仅仅使用null不能被赋值null = $a,这会导致解析错误。

但是任何变量都可以拥有null作为它的值。$a = null

因此,如果你在第二种情况中将==误输入为=,你已经改变了$a的值,并且你检查了新值的if条件,该值始终计算为false。


@bub 我知道,但这是来自C世界和嵌入式系统的原因,那里调试要困难得多。所以这是一种旧的、被广泛使用的防御性技术,用于避免将比较误写为赋值。 - Shady Atef

2
简短回答是,它完全相同。长话短说:C编程语言允许在条件中进行赋值。例如:(i = 1)==1 是有效的。这意味着:
if (x = null)

同样是有效的。

在某些情况下,您可能打算将x赋值为null,但(最常见的情况)您只是想比较x == null并且输错了。

因此,在C(或C ++)中,开发人员会执行以下操作:

if (null == x) 

这是因为如果打错成if (null = x),它将不能编译。但在PHP中,这不再是一个有效的理由,因为PHP不是编译型语言,所以此类错误无法及早捕获,这就破坏了反向语法的整个目的。然而,在PHP中使用它的优点是,当您遇到代码的那一部分时,它将出现错误而不是正常运行,因此会告知您存在的问题。另一方面,在PHP中,您应该真正使用===,因此打字错误仍将导致==

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接