PHP厳密比較を5つの基本ステップで理解しよう!

PHPでの厳密比較を学ぶ人がノートとペンを手に取り、学びの旅を始めようとしているイメージPHP
この記事は約8分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

はじめまして。

あなたがPHPの厳密比較について理解するためのステップバイステップガイド、それがこの記事です。

この記事を読めば、PHPでの厳密比較の使い方を理解し、それを自身のコードに適用することができるようになります。

●PHPとは

PHPは”PHP: Hypertext Preprocessor”の略で、オープンソースの汎用スクリプト言語です。

特にWeb開発においてよく用いられ、HTML内に直接埋め込むことが可能な言語として知られています。

また、その特性から簡易なスクリプトから大規模なWebアプリケーションまで幅広く対応でき、グローバルに非常に多くのウェブサイトで使われています。

●PHPの比較演算子とは

PHPには比較演算子があります。

これは、変数や値が等しいか、大きいか、小さいかなどを比較するための特殊な記号で、if文などの条件分岐によく用いられます。

比較演算子には、等しい(==)、大きい(>)、小さい(<)、以上(>=)、以下(<=)、等しくない(!=)などがあります。

ここで重要なのは、「等しい」を表す比較演算子には、「==」と「===」の二つがあるということです。

これらは微妙に異なる動きをしますので、それぞれの違いを理解して使用する必要があります。

●PHPでの「等しい」の意味

○「==」とは

PHPにおける「==」は、等価演算子と呼ばれます。これは左辺と右辺の値が等しいかどうかを評価します。

しかし、注意しなければならないのは、この演算子は型の違いを無視するという点です。

つまり、数値の1と文字列の’1’は「==」では等しいと評価されます。

<?php
    $num = 1;         // 数値の1
    $str = '1';       // 文字列の'1'

    if ($num == $str) {
        echo '等しいです。';
    } else {
        echo '等しくないです。';
    }
?>
// 出力: 等しいです。

この例では、数値の1と文字列の’1’が「==」によって等しいと評価され、「等しいです。」と出力されます。

○「===」とは

一方、「===」は厳密等価演算子と呼ばれ、左辺と右辺の値が等しく、かつデータ型も同じであるかどうかを評価します。

上の例と同じ数値の1と文字列の’1’を「===」で比較すると、結果は等しくないと評価されます。

<?php
    $num = 1;         // 数値の1
    $str = '1';       // 文字列の'1'

    if ($num === $str) {
        echo '等しいです。';
    } else {
        echo '等しくないです。';
    }
?>
// 出力: 等しくないです。

この例では、数値の1と文字列の’1’が「===」によって等しくないと評価され、「等しくないです。」と出力されます。

これは、データ型が数値と文字列で異なるためです。

このように、PHPでは「==」と「===」によって「等しい」を評価する動きが異なります。

それぞれの違いを理解し、適切に使用することが重要です。

●厳密比較の使い方

PHPの厳密比較(===)は、値だけでなくデータ型も確認する比較方法です。

ここでは、その使い方をいくつかのサンプルコードを通じて具体的に学びましょう。

○サンプルコード1:基本的な厳密比較

まず最初に、基本的な厳密比較の使用例を示します。

このコードでは、数値の1と文字列の’1’を厳密比較演算子(===)を用いて比較しています。

<?php
    $num = 1;         // 数値の1
    $str = '1';       // 文字列の'1'

    if ($num === $str) {
        echo '等しいです。';
    } else {
        echo '等しくないです。';
    }
?>
// 出力: 等しくないです。

この例では、数値の1と文字列の’1’が「===」によって等しくないと評価され、「等しくないです。」と出力されます。

これは、データ型が数値と文字列で異なるためです。

○サンプルコード2:型が異なる場合の厳密比較

次に、型が異なる場合の厳密比較を見てみましょう。

このコードでは、数値の1と真偽値のtrueを厳密比較しています。

<?php
    $num = 1;         // 数値の1
    $bool = true;     // 真偽値のtrue

    if ($num === $bool) {
        echo '等しいです。';
    } else {
        echo '等しくないです。';
    }
?>
// 出力: 等しくないです。

この例では、数値の1と真偽値のtrueが「===」によって等しくないと評価され、「等しくないです。」と出力されます。

これは、データ型が数値と真偽値で異なるためです。

○サンプルコード3:変数がnullの場合の厳密比較

最後に、変数がnullの場合の厳密比較を示します。

このコードでは、未定義の変数とnullを厳密比較しています。

<?php
    $var;            // 未定義の変数
    $null = null;    // null

    if ($var === $null) {
        echo '等しいです。';
    } else {
        echo '等しくないです。';
    }
?>
// 出力: 等しいです。

この例では、未定義の変数とnullが「===」によって等しいと評価され、「等しいです。」と出力されます。

これは、未定義の変数もnullも値が存在しないことを表すためです。

●厳密比較の応用例

厳密比較は、条件分岐や配列内の要素検索など、多くの場面で活用できます。

ここでは、その具体的な応用例を2つのサンプルコードで示します。

○サンプルコード4:厳密比較を使った条件分岐

このコードでは、厳密比較を利用して条件分岐を行う例を紹介します。

ユーザーが入力したパスワードが登録されているパスワードと同一であるかどうかを確認するためのものです。

<?php
    $input_password = '12345'; // ユーザーからの入力
    $registered_password = '12345'; // 登録されているパスワード

    if ($input_password === $registered_password) {
        echo 'パスワードが正しく入力されました。';
    } else {
        echo 'パスワードが間違っています。';
    }
?>
// 出力: パスワードが正しく入力されました。

この例では、ユーザーからの入力$input_passwordと登録されているパスワード$registered_passwordを厳密比較しています。

これにより、値と型が共に同じである場合のみ「パスワードが正しく入力されました。」と出力し、そうでなければ「パスワードが間違っています。」と出力します。

○サンプルコード5:厳密比較を使った配列内の要素検索

次に、配列内の要素を検索する際に厳密比較を使った例を紹介します。

配列内に特定の要素が存在するかを厳密に調べるためのものです。

<?php
    $fruits = array('apple', 'banana', 'cherry'); // フルーツの配列
    $search = 'banana'; // 検索するフルーツ

    if (in_array($search, $fruits, true)) {
        echo $search . 'は配列内に存在します。';
    } else {
        echo $search . 'は配列内に存在しません。';
    }
?>
// 出力: bananaは配列内に存在します。

この例では、in_array()関数の第三引数にtrueを指定することで、厳密比較を使用して配列内の要素を検索しています。

$searchに指定したフルーツが配列$fruits内に存在する場合、「bananaは配列内に存在します。」と出力し、そうでなければ「bananaは配列内に存在しません。」と出力します。

●注意点と対処法

PHPの厳密比較は非常に便利な一方で、使用する際には注意が必要です。

ここでは、厳密比較を理解するためのポイントと対処法について説明します。

○厳密比較とは何かを理解する

厳密比較とは、値だけでなく型も含めて二つの値が等しいかどうかを判断する比較方法です。

「===」演算子を使用すると、型が異なる場合でも強制的に型変換せずに比較します。

これは、自動的な型変換が起こらないため、予期しない結果を避けることができます。

○データ型の誤解を避ける

PHPでは、変数の型は宣言時ではなく代入時に決定されます。

これは動的型付け言語の特性で、非常に柔軟なコーディングを可能にしますが、同時に型に関する誤解を招く可能性もあります。

そのため、厳密比較を使用する際は、比較する値の型を常に意識することが重要です。

○エラーへの対処法

比較する変数の一方が未定義である場合や、比較する値の型が不適切である場合など、厳密比較を使用する際にはエラーが発生する可能性があります。

そのため、比較する前に変数が定義されていることを確認したり、gettype()関数を使用して変数の型を確認するなどの対処が必要です。

まとめ

PHPの厳密比較は、型も考慮した厳格な比較を行うための強力なツールです。

しかし、使用する際には、比較する値の型や変数の定義状況を常に確認することが重要です。

本記事で紹介した基本的な使い方と注意点を把握すれば、PHPプログラミングがより円滑になるでしょう。

最後まで読んでいただきありがとうございました。