PHPの比較演算子で条件分岐も自由自在

  • このエントリーをはてなブックマークに追加
  • Pocket

スポンサードリンク

2つの値を比較して、大きい、小さい、等しい、等しくないなど、両者を比較する演算子です。

例えば、if文などの条件分岐で「年齢が20歳以上だったら「成人」と表示させる」というような判定をする場合によく用いられます。

ただ、型を意識しないと、思わぬところでハマってしまうこともあるため、=====を使い分けてスピーディにコーディングしていきましょう。

 

比較演算子一覧

比較演算子の一覧です。

演算子サンプル説明
==a == baとbは同じ値
!=a != baとbは違う値
<>a <> baとbは違う値
>a > bbよりaが大きい
>=a >= baはb以上
(bよりaが大きいか同じ)
<a < baよりbが大きい
<=a <= bbはa以上
(aよりbが大きいか同じ)
===a === baとbは同じ値
(型も含めた厳密な比較)
!==a !== baとbは違う値
(型も含めた厳密な比較)

比較演算子の使い方

if文で「成人」か「未成年」かを表示させる。

変数$ageに格納された年齢を元に、if文で比較演算子を使い、20以上か未満かを判定する。

以下のように表示される

「成人」

該当のユーザーと合致した場合にのみ「ようこそ!!」と表示させる

変数$userに格納された名前が、if文で指定された名前と合致するかを判定する。

以下のように表示される

「ようこそ!!」

PHPの型変換により、FALSEのはずがTRUE判定に!!

「19歳」と「19」を比較したら、以下のように「同じ」と判定されてしまいます。

なぜでしょう?

同じです。

PHPの文字列型と数値型の比較は、自動変換により両者とも数値型に揃えられる

PHPでは型を自動変換してくれたりと何かと融通が効く言語ですが、型を意識しないとハマってしまうこともしばしばです。

上記の例だと、「19歳」という文字列型と「19」という数値型の比較になります。

この場合、文字列型は数値型に変換され、同じ型で比較しようとします。

文字列型の「19歳」は数値型に自動変換されるため、「19」となります。

結果、19 == 19ということで、true(同じだよ!)と判定されてしまうのです。

厳密な比較演算子で型まで比較しよう

上記の例で誤った結果とならないためには、型まで含めて比較する必要があります。

厳密な比較をしてくれる===で型まで含めて比較してやることで、自動変換を防ぎます。

違います。

PHPは気の利く言語です。

型なんか意識しなくても、すいすいコーディングできますが、裏ではこういう変換などでスムーズに作業できるように考えられているんですね。

それだけに、型を意識することを忘れてしまいがちです。

しかし上記のような例や、日付を扱うときなど、型を意識したコードを書かないと思わぬところでハマってしまいます。

型を意識したコーディングに取り組みたいものですね。

スポンサードリンク

  • このエントリーをはてなブックマークに追加
  • Pocket

コメント

  1. admin より:

    >bはa以上
    >(bよりaが大きいか同じ)

    aよりbが大きいか同じ
    ではないでしょうか?

    1. flatFlag より:

      adminさん

      >aよりbが大きいか同じ
      >ではないでしょうか?

      確かにその通りですね。
      訂正させていただきました。
      ご指摘ありがとうございます。

flatFlag にコメントする コメントをキャンセル

*