变量===值和值===变量之间的区别?

时间:2011-10-02 10:05:31

标签: php zend-framework equality

a)

  if(null === $object)
    {
    //take some action
    }

b)中

  if($object === null)
    {
    //take some action
    }

我习惯于像b)那样做,但在Zend-Framework中,我发现他们所做的每件事都像a)。这有什么好处吗?

感谢。

6 个答案:

答案 0 :(得分:5)

不,没有区别。

当你写$a = null而不是$a == null(或$a === null)时,后者应该有助于避免愚蠢的拼写错误。在第一种情况下,你会得到逻辑错误,因为分配而不是比较,在第二种情况下 - 你会得到致命错误,这将有助于你更快地找到问题。

答案 1 :(得分:1)

没有区别,它用于避免错误(比如将变量设置为null,而不是比较它们),但是null === $object通常被认为是错误的方式(c)以避免错别字。

答案 2 :(得分:1)

$object === null表达式比null === $object更加人性化,因为第二个表达式打破了从左到右的自然阅读顺序。这就是为什么即使翻译没有太大差异,但是人类阅读起来有点困难。涉及一些逻辑 - 如果你使用if..else语句听起来应该怎么样? “如果null等于$object ..等一下,nullnull,它怎么能等于别的呢?哦,哎呀,我们实际比较右撇子对于左撇子的价值,这是相反的东西。所以,如果$object等于null那么我们就应该......“。而且你每次都这样想

我的结论是:每次都可以使用$value == const!很久以前人们写了if ($value = const),但这些时间已经过去了。现在每个IDE都能告诉你这些简单的错误。

答案 3 :(得分:0)

b)比a)更加可读

并且a)被一些过于谨慎的人认为不太容易出错,因为==可能会导致=混淆。
但是如果有三个人,我怀疑有人会把它与一个混淆。

答案 4 :(得分:0)

开发商可以选择尝试停止对值进行实际分配。

两种比较方法之间的功能完全相同,但在“a”的情况下,它会停止任何值的意外分配,因为您无法将某些内容指定为null。

答案 5 :(得分:-1)

第二种方法针对null检查变量的值和类型,两种方法中的错误应该不同。