2012-10-05 43 views
2

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

我知道我会在下面的例子同样的结果,这将始终是真的吗?

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

你为什么要这样做? PHP的运营商已经够混乱了。 – BoltClock

+1

!=不相等,你需要!==不等于不相同的类型。 http://php.net/manual/en/language.operators.comparison.php – ace

+0

检查这个问题,你不会喜欢使用'=='或'!=',http://stackoverflow.com/questions/ 12598407/php -expressings-two-different-strings-to-the-the-same – xdazz

回答

6

简短的回答是,不,你不能互换他们,因为他们检查不同的事情。他们是不等价的运营商。

你会想要使用!==

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

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

如你所知,===也检查类型。

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

+0

几秒钟比我快:)。这是你的解决方案。 – Lkrups

+0

你是对的,我想用==!而不是!=。 –

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

+1

它要求'if($ a === $ b)true;否则为false;'与'if($ a!= $ b)false;否则为真;',这正是我要解释的。 – deceze

+0

啊,然后只是一个*非常*措辞不佳的OP .. – 2012-10-05 04:28:10

相关问题