ホーム > PHPの文法 > 4 演算子 > PHP の 比較演算子 のすべて【初心者向け】
PHPリファレンス

UPDATE:2021年05月31日

PHP の 比較演算子 のすべて【初心者向け】

PHP の 比較演算子 のすべて【初心者向け】 | wepicks!
PHP4 PHP5 PHP7 PHP8

1 Minute Note

==等しい===同じ
!=等しくない<>等しくない
!==同じでない  
>より大きい<より小さい
>=以上<=以下
<=>より小さい 等しい より大きい
  • 比較演算子 は、左右のオペランドを比較する(オペランド:演算の対象となる値や変数や式のこと)
  • 比較演算子 は、結果を論理値「TRUE(真)」「FALSE(偽)」で返す(論理値 詳しくはこちら)
  • 比較演算子 は、様々なデータ型を比較できる
比較演算子を利用して様々な値を比較することが可能です。比較の結果は TRUE や FALSE の論理値で返ってきます。比較演算子は if文 や if else 文 の条件式などで利用します。


比較演算子とは

POINT

  • 比較演算子 は、左右のオペランドを比較する
  • 比較演算子 は、結果を論理値「TRUE(真)」「FALSE(偽)」で返す

比較演算子は左辺オペランド右辺オペランドを比較します(オペランド:演算の対象となる値や変数や式のこと)。比較の結果が真なら論理値の「true(真)」を返し、そうでない場合は論理値の「false(偽)」を返します(論理型 詳しくはこちら)。オペランドには数値文字列の両方が使用できます。また他のさまざまな型を比較できます。

文字列の自動変換による影響

注意
PHP8 以前のバージョンでは、文字列が数値または数値形式の場合、文字列は比較演算子で比較する前、数値に自動で変換(キャスト)されていました。自動変換の影響によって、数値と文字列から変換された数値との比較の結果が、以下のように誤動作を招くものとして注意されていました。PHP7 と PHP8 の結果の内容をご覧ください。

PHP7 の結果は

bool(true)
bool(true)
bool(true)
bool(true)
0

となります。

PHP8 の結果は

bool(false)
bool(true)
bool(true)
bool(true)
a

となります。

比較演算子の種類

比較演算子の種類、優先順位、結合時の評価です。すべての演算子の種類や優先順位はこちらを参照下さい。

演算子名前優先順位結合時の評価結果
==等しい1結合しない$a == $b 型の相互変換をした後で $a が $b に等しい時に TRUE。
===同じ1結合しない$a === $b $a が $b に等しく同じ型である場合に TRUE
!=等しくない1結合しない$a != $b型の相互変換をした後で $a が $b に等しくない場合に TRUE
<>等しくない1結合しない$a <> $b型の相互変換をした後で $a が $b に等しくない場合に TRUE
!==同じでない1結合しない$a !== $b$a が $b と等しくないか、同じ型でない場合に TRUE
>より大きい2結合しない$a > $b$a が $b より大きい時に TRUE
<より小さい2結合しない$a < $b$a が $b より小さい時に TRUE
>=以上2結合しない$a >= $b$a が $b より大きいか等しい時に TRUE
<=以下2結合しない$a <= $b$a が $b より小さいか等しい時に TRUE
<=>宇宙船2結合しない$a <=> $b$a が $b より小さいときに負の値、
$b と等しいときに 0、
$b より大きいときに正の値。(PHP7以降で使用可能)
型の相互変換
殆どの演算子はオペランド(値あるいは式)に対して前提条件があります。例えば、「 + 」や「 – 」など、算術演算子のニ項演算子の場合、2つのオペランドが同じデータ型であることが前提条件になっています。そのためPHPでは前提条件に則るためにデータ型を自動的に変換します。詳しくは「さまざまな型の比較」で説明します。

さまざまな型の比較

POINT

  • 比較演算子 は、様々なデータ型を比較できる

比較演算子は様々なデータ型を比較でき、左辺オペランドと右辺オペランドに異なるデータ型を配置しても比較することが可能です。その際、注意しなければならないことは、型のジャグリングが発生するということです。型のジャグリングとは規則に応じて自動的に行われるデータ型の変換のことです。PHPは必要に応じてデータ型を自動的に変換します。データ型の変換をキャストといいます。型のジャグリングについてはこちらを参照ください。

以下の表は比較演算子を利用する際、左右のオペランドの型に応じた振る舞いです。

第 1 オペランドの型第 2 オペランドの型結果
null または stringstringNULL を "" に変換し、数値または文字として比較します
bool または nullあらゆる型bool に変換し、FALSE < TRUE と判断します
objectobject組み込みクラスには独自の比較基準が定義されています。それ以外の
クラスは比較できません。同じクラスであるかどうかは – プロパティが
同じ値であるかどうかを配列形式で比較(PHP 4)、PHP 5 では ここで説明されています。
string, resource または numberstring, resource または number文字列やリソースを数値に変換し、算術演算を行います
arrayarray要素数の少ない配列のほうが小さくなります。オペランド 1 のキーが
オペランド 2 に存在しない場合、配列は比較できません。そうでない場合は
個々の要素の値を比較します
arrayあらゆる型array のほうが常に大きくなります
objectあらゆる型object のほうが常に大きくなります

結果は

結果は TRUE です。
結果は TRUE です。
結果は TRUE です。

となります。

比較の例

== 等しい

2つのオペランドの「値」が等しい場合はtrueを返します。そうでない場合にfalseを返します。

結果は

結果は TRUE です。

となります。

== 同じ

2つのオペランドの「値」と「型」が等しい場合はtrueを返します。そうでない場合にfalseを返します。この演算子は暗黙のキャスト(型変換)は行われません。

結果は

結果は TRUE です。

となります。

!= 等しくない

2つのオペランドの「値」が等しくない場合にtrueを返します。そうでない場合にfalseを返します。

結果は

結果は TRUE です。

となります。

!== 同じでない

2つのオペランドの「値」が等しくない場合、または、「型」が等しくない場合にtrueを返します。そうでない場合にfalseを返します。

結果は

結果は TRUE です。

となります。

> より大きい

左辺のオペランドが右辺のオペランドより大きい場合にtrueを返します。そうでない場合にfalseを返します。

結果は

結果は TRUE です。

となります。

< より小さい

左辺のオペランドが右辺のオペランドより小さい場合にtrueを返します。そうでない場合にfalseを返します。

結果は

結果は TRUE です。

となります。

>= 以上

左辺のオペランドが右辺のオペランドより大きい場合、または、等しい場合にtrueを返します。そうでない場合にfalseを返します。

結果は

結果は TRUE です。

となります。

<= 以下

左辺のオペランドが右辺のオペランドより小さい場合、または、等しい場合にtrueを返します。そうでない場合にfalseを返します。

結果は

結果は TRUE です。

となります。

<=> より小さい 等しい より大きい

左辺のオペランドが右辺のオペランドより小さい場合は負の値、左辺のオペランドと右辺のオペランドが等しい場合は0、左辺のオペランドより右辺のオペランドの方が大きい場合に正の値を返します。

結果は

0
-1
1
0
-1
1
0
-1
1
-1
1

となります。

サンプルコード

– サンプル Click Here ! –

実行結果
型変換
結果は TRUE です。
結果は TRUE です。
結果は TRUE です。

== 等しい
結果は TRUE です。

=== 同じ
結果は TRUE です。

!= 等しくない
結果は TRUE です。

!== 同じでない
結果は TRUE です。

> より大きい
結果は TRUE です。

< より小さい
結果は TRUE です。

>= 以上
結果は TRUE です。

<= 以下
結果は TRUE です。

<=> より小さい 等しい より大きい
0
-1
1
0
-1
1
0
-1
1
-1
1

– サンプル Click Here ! –


タグ(=記事関連ワード)

日付

公開日:2019年5月14日
最終更新日:2021年05月31日

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

https://wepicks.net/phpref-operators_comparison/trackback/

page top