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 に答える