Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:比较null中运算符的顺序_Php_Operators - Fatal编程技术网

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

PHP:比较null中运算符的顺序,php,operators,Php,Operators,我通常这样写: if ($myvar == null) 但有时我读到: if (null == $myvar) 我记得有人告诉我后者更好,但我不记得为什么 你知道哪个更好,为什么 谢谢, Dan如果您不小心忘记了其中一个=,则第二个将给出一个错误 if ($myvar = null) 这将null分配给$myvar,并对结果执行if检查 if (null = $myvar) 这将尝试将$myvar的值分配给null,并给出一个错误,因为您无法分配给null,这与顺序无关,而是要避免意外跳

我通常这样写:

if ($myvar == null)
但有时我读到:

if (null == $myvar)
我记得有人告诉我后者更好,但我不记得为什么

你知道哪个更好,为什么

谢谢,
Dan

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

if ($myvar = null)
这将
null
分配给
$myvar
,并对结果执行
if
检查

if (null = $myvar)

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

,这与顺序无关,而是要避免意外跳过一个
=
,这将导致赋值而不是比较。使用常量优先约定时,意外跳过会引发错误。

我见过后者用于帮助避免程序员错误,例如:

if ($myvar = null)
if($myvar = null)
这将始终返回true,而

if(null = $myvar)

将引发错误。

您可以改用
is_null()

使用赋值运算符
=
代替相等运算符
=
是常见错误:

if ($myvar = null)
if($myvar = null)

它实际上将
null
分配给
$myvar
。捕获此逻辑错误的一种方法是在LHS上使用常量,这样如果您使用
=
代替
=
,您将得到一个错误,因为常量(在本例中为
null
)无法赋值:

此人可能提到的是关于条件语句的微优化。例如,在下面的示例中,第二个条件不会被评估为第一个条件已经失败

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

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

这是我所看到的和其他许多惯例的重复。这是有道理的。谢谢不是他要求的,这是关于操作数顺序的。不,第一个将返回
null
,在布尔转换中计算为
false
,因此此条件将永远不会通过。另一个问题是,它还将
$myvar
设置为
null