Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.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 变量===值和值===变量之间的差异?_Php_Zend Framework_Equality - Fatal编程技术网

Php 变量===值和值===变量之间的差异?

Php 变量===值和值===变量之间的差异?,php,zend-framework,equality,Php,Zend Framework,Equality,a) if(null === $object) { //take some action } b) 我习惯于像b)那样做,但在Zend框架中,我发现他们像a)那样做的地方随处可见。它有什么好处吗 谢谢。不,没有区别 当您编写$a=null而不是$a==null(或$a==null)时,后者应该有助于避免愚蠢的打字错误。在第一种情况下,由于赋值而不是比较,您将得到逻辑错误;在第二种情况下,您将得到致命错误,这将帮助您更快地发现问题。不,没有区别 当您编写$a=null

a)

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

我习惯于像b)那样做,但在Zend框架中,我发现他们像a)那样做的地方随处可见。它有什么好处吗


谢谢。

不,没有区别


当您编写
$a=null
而不是
$a==null
(或
$a==null
)时,后者应该有助于避免愚蠢的打字错误。在第一种情况下,由于赋值而不是比较,您将得到逻辑错误;在第二种情况下,您将得到致命错误,这将帮助您更快地发现问题。

不,没有区别


当您编写
$a=null
而不是
$a==null
(或
$a==null
)时,后者应该有助于避免愚蠢的打字错误。在第一种情况下,由于赋值而不是比较,您将得到逻辑错误;在第二种情况下,您将得到致命错误,这将帮助您更快地找到问题。

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

第二种方法根据
null
检查变量的值和类型,两种方法的错误应该不同

没有区别,它用于避免错误(如将变量设置为
null
,不进行比较),但是
null===$object
通常被认为是避免输入错误的坏方法(c)。没有区别,它用于避免错误(如将变量设置为
null
,不进行比较),然而,
null===$object
通常被认为是避免打字错误的坏方法。
$object===null
表达式比
null===$object
更人性化,因为第二个表达式打破了从左到右的自然阅读顺序。这就是为什么即使对口译员来说并没有太大的区别,但人类阅读起来却有点困难。涉及一些逻辑-如果使用if..else语句,它应该是什么样的?“如果
null
等于
$object
。等一下,
null
null
,它怎么能等于其他东西呢?哦,天啊,我们实际上比较了右撇子值和左撇子值,这是相反的东西。所以,如果
$object
等于
null
,那么我们应该……”。你每次都是这样想的


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

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

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

b)比a)可读性好得多

a)被一些谨小慎微的人认为不太容易出错,因为可能会将
=
=
混淆
但如果是三个,我怀疑有人会把它和一个混淆。

b)比a)更可读

a)被一些谨小慎微的人认为不太容易出错,因为可能会将
=
=
混淆

但是如果是三个,我怀疑有人会把它和一个混淆。

这是开发者试图停止意外赋值的选择


这两种比较方法的功能完全相同,但在“a”的情况下,它会停止任何意外赋值,因为您不能将某个值赋值为null。

这是开发人员尝试停止意外赋值的选择


这两种比较方法的功能完全相同,但在“a”的情况下,它会停止任何意外的值赋值,因为您无法将某个值赋值为null。

在javascript中,您会遇到类型强制的问题。PHP不这样做吗?在javascript中,您会遇到类型强制的问题。PHP不这样做吗?自然阅读顺序将以两种方式工作。此外,好的做法是为从左到右的读者编写
NULL
lefthand,以防止打字错误(我们人类也会这样做)。所以照顾自己更自然,不是吗?从字面上看-1对于我来说,如果$apple是红色的,那么阅读
要比阅读
要容易得多,而如果红色是$apple的话,阅读
要容易得多。我同意,在这种情况下,我们可以进行打字,但我认为主要目标是克服代码复杂性,使其易于理解。我更喜欢让我的代码更具可读性,并且有键入
=
而不是
=
的风险,因为这种情况很少发生,而且很容易发现是否遵循干净的代码规则——编写尽可能小的函数。更好的阅读方法是:
if($apple->isRed())
。不要把动词和名词混在一起,而要使名词成为宾语和动词的方法。我的论点更像是这样:
if(a==b)
或者
if(b==a)
读起来是一样的。这是一个比较(双面),所以自然读数应该无关紧要。是的,当
a
b
是变量时,你是完全正确的。(在我最后的评论中,我不得不将变量命名为
$apple\u c
  if($object === null)
    {
    //take some action
    }