PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

「!==」と「==!」の違いを解説!PHPの比較演算子

PHPには一見よく似ていますが、動作がまったく異なる演算子が存在します。その代表格が「!==」と「==!」です。この記事では、それぞれの演算子の意味と違いを、サンプルコード付きでわかりやすく解説します。

「!==」比較演算子とは

「!==」は「型も含めて等しくない」ことを判定する比較演算子です。値の比較時にデータ型の自動変換(型ジャグリング)を行わず、厳密な型チェックを実施します。そのため、たとえば 1 !== '1' は数値の1と文字列の'1'というように型が異なるため、true を返します。

「==!」比較演算子とは

実は「==!」という単一の演算子は存在しません。「==!」は「==」と「!」という2つの演算子が組み合わさったものとして解釈されます。つまり、$x ==! $y$x == (!$y) と書き換えられ、「$y を否定した値」と「$x」が緩やかに等しいかどうかを判定するのです。

サンプルコード

以下の例では、「!==」と「==!」の使い方の違いを実際に確認できます。

<!DOCTYPE html>
<html>
<head>
    <title>PHP Example</title>
</head>
<body>
    <?php
    $x = true;
    $y = false;
    echo '$x !== $y = ';

    // $x と $y は等しくないため
    // true が返される
    var_dump($x !== $y);
    print("<br/>");
    echo '$x ==! $y = ';
    // !$y は true となり $x と同じ値のため
    // true が返される
    var_dump($x ==! $y);
    ?>
</body>
</html>

出力結果

$x !== $y = bool(true)
$x ==! $y = bool(true)

まとめ

「!==」は型チェック込みで「等しくない」ことを判定する演算子である一方、「==!」は独立した演算子ではなく「==」と「!」の組み合わせです。この例では両者とも true を返しますが、その意味はまったく異なります。意図しないバグを防ぐためにも、厳密な比較には「===」や「!==」を使用することが推奨されます。

  1. C#と.NETの違いをわかりやすく解説!言語とフレームワークの関係

    C#と.NETの基本的な違いC#(シーシャープ)はマイクロソフトが開発したプログラミング言語であり、一方の.NET(ドットネット)はアプリケーション開発を支援するフレームワークです。この2つは密接な関係にありますが、それぞれの役割はまったく異なります。.NETの中核となる「共通言語ランタイム(CLR)」.NETには「共通言語ランタイム(CLR:Common Language Runtime)」と呼ばれる仮想的な実行環境が組み込まれています。CLRはメモリ管理、例外処理、セキュリティなどを担当し、.NET上で動作するすべてのアプリケーションの土台となる重要なコンポーネントです。C#だけじゃない!

  2. Pythonの「==」と「is」演算子の違いをわかりやすく解説

    「==」と「is」の基本的な違い Pythonには、オブジェクトを比較するための方法として「==」演算子と「is」演算子の2つがあります。一見すると似たような働きをするように見えますが、この2つはまったく異なる目的を持っています。 「==」(等価演算子)は、2つの変数の値が等しいかどうかを比較します。一方、「is」(同一性演算子)は、2つの変数が同じオブジェクト(同じメモリ上の場所)を参照しているかどうかを確認します。 サンプルコード 以下のコードは、「==」と「is」の動作の違いを示すシンプルな例です。ここでは空のリストを扱っています。list1とlist2はそれぞれ独立した別々の空のリスト