2

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

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

//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';
        }
    ?>
4

2 回答 2

6

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

你会想要使用 !==

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

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

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

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

于 2012-10-05T04:15:53.230 回答
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

于 2012-10-05T04:23:22.863 回答