PHP PHP入門講座 プログラミング

【PHPプログラミング入門講座】比較演算子

PHPプログラミングのキービジュアル

これまでのおさらい

前の記事「【PHPプログラミング入門講座】条件分岐 (if文)」では、if文の使用例として、比較演算子「==」を使ったサンプルプログラムを紹介しました。
「$a == $b」の結果は、$aと$bが等しい場合はtrueになり、等しくない場合はfalseになります。
trueとfalseは、「論理型(boolean型)」と呼ばれます。
論理型(boolean型)については前の記事「【PHPプログラミング入門講座】論理型 (boolean型)」で説明しました。

今回の内容はこれらの知識を踏まえての説明になります。

比較演算子の種類

前回までは、if文について理解してもらうために、比較演算子「==」だけを紹介しましたが、比較演算子はそれだけではありません。
比較演算子の一覧表を以下に掲載します。

意味 説明
$a == $b 等しい $aと$bの値が等しい場合はtrue、そうでない場合はfalse
(データ型の比較はしない)
$a === $b 等しい
(厳密)
$aと$bの値とデータ型が等しい場合はtrue、そうでない場合はfalse
$a != $b 等しくない $aと$bの値が等しくない場合はtrue、そうでない場合はfalse
(データ型の比較はしない)
$a !== $b 等しくない
(厳密)
$aと$bの値またはデータ型が等しくない場合はtrue、そうでない場合はfalse
$a < $b より小さい $aが$bより小さい(<)場合はtrue、そうでない場合はfalse
$a > $b より大きい $aが$bより大きい(>)場合はtrue、そうでない場合はfalse
$a <= $b 以下 $aが$b以下(≦)の場合はtrue、そうでない場合はfalse
$a >= $b 以上 $aが$b以上(≧)の場合はtrue、そうでない場合はfalse
$a <=> $b 宇宙船演算子 $a<$bの場合-1、$a==$bの場合0、$a>$bの場合1
(PHPバージョン7.0以上で使用可能)

比較演算子とは、2つの値(基本的に数値)がその間に書いている演算子の通りの大小関係になっていればtrue、そうでなければfalseになる演算子です。
(※注:宇宙船演算子「<=>」だけは特殊であり、true/falseではなく数値になります。)

それでは、それぞれの比較演算子について詳しく説明していきます。

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

比較演算子「==」と「===」は、左辺と右辺が等しい場合にtrueとなり、等しくない場合にfalseになる演算子です。
ただし、「===」の場合は、値だけでなくデータ型も同じでなければfalseになる性質を持っています。

変数の値に対する比較演算子「==」と「===」の結果を次の表にまとめました。

No 変数の値 結果
(1) $a = 5
$b = 5
$a == $b true
$a === $b true
(2) $a = 5
$b = 3
$a == $b false
$a === $b false
(3) $a = 'apple'
$b = 'apple'
$a == $b true
$a === $b true
(4) $a = 'apple'
$b = 'banana'
$a == $b false
$a === $b false
(5) $a = 5
$b = '5'
$a == $b true
$a === $b false

(1)〜(4)は明らかに左辺の変数$aと右辺の変数$bが等しければtrue、等しくなければfalseになるということは理解できると思います。
(5)は、変数$bに代入する数字はシングルクォーテーションで囲まれているため「文字列型」になります。
変数$aが数値で、変数$bが文字列型であるためデータ型が異なっています。
その場合は、「==」の結果はtrueになりますが、「===」の結果はfalseになります。

ちなみにこれらの結果は次のようなPHPプログラムを作って確認することができます。

<?php
  $a = 5;
  $b = '5';
  $result = ($a === $b);
  var_dump($result);

上の表を参考に変数$aと変数$bの値を変えたり、「==」と「===」を変えたりして実際の結果を確認してみましょう。

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

比較演算子「!=」と「!==」は、「==」と「===」の逆です。
左辺と右辺が等しくない場合にtrueとなり、等しい場合にfalseになる演算子です。
ただし、「!==」の場合は、値が等しくてデータ型が異なる場合は、trueになる性質を持っています。

変数の値に対する比較演算子「!=」と「!==」の結果を次の表にまとめました。

No 変数の値 結果
(1) $a = 5
$b = 5
$a != $b false
$a !== $b false
(2) $a = 5
$b = 3
$a != $b true
$a !== $b true
(3) $a = 'apple'
$b = 'apple'
$a != $b false
$a !== $b false
(4) $a = 'apple'
$b = 'banana'
$a != $b true
$a !== $b true
(5) $a = 5
$b = '5'
$a != $b false
$a !== $b true

比較演算子「<」と「>」と「<=」と「>=」

比較演算子「<」と「>」と「<=」と「>=」は、小学校の算数の授業で習った不等号「<」と「>」と「≦」と「≧」に該当します。
プログラム言語では、半角文字しか使えないため、「≦」は「<=」、「≧」は「>=」と書きます。
最初は違和感を感じるかもしれませんが、慣れていきましょう。

これらの比較演算子は、不等号の内容が正しければtrue、正しくなければfalseになります。
例えば$a=3、$b=4の場合、「$a < $b」は正しいのでtrue、「$a > $b」は間違っているのでfalseになります。

また、これらの比較演算子は基本的に数値同士の比較で使用します。
データ型が文字列型であっても内容が数値である値は、文字列→数値に変換して比較されます。
例えば、文字列型の「'5'」は数値型の「5」に変換されてから数値として比較されます。

変数の値に対する比較演算子「<」と「>」と「<=」と「>=」の結果を次の表にまとめました。

No 変数の値 結果
(1) $a = 3
$b = 4
$a < $b true
$a > $b false
$a <= $b true
$a >= $b false
(2) $a = 3
$b = 3
$a < $b false
$a > $b false
$a <= $b true
$a >= $b true

これは、不等号が正しいかどうかをチェックするだけの演算子であり、理解するのは難しくないかと思います。

比較演算子「<=>」

比較演算子「<=>」は、PHPのバージョン7.0から追加された新しい演算子です。
その見た目から宇宙船演算子と呼ばれています。
この演算子は、多くのデータを並び替える処理を記述するときなどに利用します。
現段階では、難しい内容であることと、使用することはあまりないので、説明は割愛します。
こんな比較演算子もあるということだけ、頭の片隅に覚えておいてください。

if文を使ったサンプルプログラム

比較演算子の説明を一通りしましたが、具体的なイメージを持つために、if文を使ったサンプルプログラムをいくつか書いておきます。

<サンプルプログラム>

<?php
  $a = 5;
  $b = 6;
  if($a != $b) {
    echo $a . 'と' . $b . 'は等しくありません。';
  } else {
    echo $a . 'と' . $b . 'は等しいです。';
  }

<実行結果>

5と6は等しくありません。

<サンプルプログラム>

<?php
  $a = 100;
  $b = 200;
  if($a > $b) {
    echo $a . 'は' . $b . 'よりも大きいです。';
  } else {
    echo $a . 'は' . $b . 'よりも小さいか、等しいです。';
  }

<実行結果>

100は200よりも小さいか、等しいです。

おわりに

比較演算子は、if文で変数の値を比較するときによく使います。
これからも頻繁に登場しますので、よく理解しておきましょう。

PHPプログラミング入門講座 〜 全記事一覧 〜

-PHP, PHP入門講座, プログラミング
-, , ,

Copyright© ハッピー・プログラミング・ライフ , 2020 All Rights Reserved.