可以===和!=可以互换使用?

时间:2012-10-05 04:13:31

标签: php

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

我知道我会在下面的例子中得到相同的结果,这总是如此吗?

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

2 个答案:

答案 0 :(得分:6)

简短的回答是,不,你不能互换它们,因为它们会检查不同的东西。他们不是等同的运营商。

你想要使用!==

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

使用==时,如果需要,要比较的值是类型转换。

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

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

答案 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相同。