【问题标题】:can === and != be used interchangably?=== 和 != 可以互换使用吗?
【发布时间】:2012-09-26 04:52:54
【问题描述】:

关系运算符 ===(用于相同)是否可以与 != 运算符互换使用并获得相同的结果?或者我以后在执行更大的程序时最终会遇到问题吗?

我知道我会在下面的示例中得到相同的结果,这总是正确的吗?

//example 1  
   <?php
        $a = 1; //integer
        $b = '1'; //string
        if ($a === $b) {     
            echo 'Values and types are same'; 
        }
        else {
            echo 'Values and types are not same';
        }
    ?> 

 // example 2
    <?php
        $a = 1; //integer
        $b = '1'; //string
        if ($a != $b) {     
            echo 'Values and types are not same'; 
        }
        else {
            echo 'Values and types are same';
        }
    ?>

【问题讨论】:

标签: php


【解决方案1】:

简短的回答是,不,您不能互换它们,因为它们检查不同的东西。它们不是等效的运算符。

你会想要使用 !==

这基本上意味着被比较的两个值必须是相同的类型。

当您使用 == 时,如果需要,被比较的值会进行类型转换。

如您所知,=== 也会检查类型。

当您使用 != 时,值也是类型转换的,而 !== 会严格检查值和类型。

【讨论】:

  • 比我快几秒 :)。这就是你的解决方案。
【解决方案2】:

您实际上是在问!($a != $b) 是否总是与$a === $b 相同。简单回答是不。 !($a != $b)可以归结为$a == $b,显然和$a === $b不一样:

php > var_dump(!('0' != 0));
bool(true)

php > var_dump('0' === 0);
bool(false)

!== 显然是=== 的反义词,所以!($a !== $b) 将始终与$a === $b 相同。

【讨论】:

  • 这是在询问 if ($a === $b) true; else false;if ($a != $b) false; else true;,这就是我要解释的内容。
猜你喜欢
  • 1970-01-01
  • 2015-01-25
  • 1970-01-01
  • 2012-12-29
  • 2017-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多