比較演算子の種類と利用方法
比較演算子は2つの値を比較し、結果として論理値の TRUE または FALSE を返すものです。例えば値Aと値Bが等しいかどうかや、大きいかどうかといった比較を行うのに使用し、 if 文の条件式のところなどで記述されることが多いです。ここでは PHP における比較演算子の使い方について解説します。
比較演算子とは
比較演算子は 2 つの値を比較するのに使用します。 PHP では次のような比較演算子が用意されています。
| 演算子 | 記述例 | 意味 |
|---|---|---|
| == | a == b | bとaの値が等しい |
| === | a === b | bとaの値が等しく型も等しい |
| != | a != b | bとaの値が等しくない |
| <> | a <> b | bとaの値が等しくない |
| !== | a !== b | bとaの値または型が等しくない |
| > | a > b | bよりaが大きい |
| >= | a >= b | bよりaが大きいか等しい |
| < | a < b | bよりaが小さい |
| <= | a <= b | bよりaが小さいか等しい |
比較演算子は左辺と右辺に指定した数値や文字列を比較し等しいか等しく無いか、また大きいか小さいかなどを比較します。そして真となった場合には TRUE、偽となった場合には FALSE を返します。
ではいくつかの演算子を実際に試してみます。
※ 演算子に関する優先順位については「すべての演算子の優先順位と結合順位」を参照して下さい。
値が等しいかどうか
2 つの値が等しいかどうかの比較を行うには == 演算子を使用します。次の例を見て下さい。
$num = 20;
if ($num == 20){
echo "変数の値は 20 と等しい";
}
演算子の右辺と左辺の値を比較して等しければ TRUE を返します。数値と数値の比較の場合は、数値が同じ場合に TRUE となります。また文字列と文字列の比較の場合、完全に一致している場合に TRUE となります。
比較演算子の右辺と左辺のデータ型が異なっていても比較は行われます。この時、自動的に型の変換が行われます。数値と文字列の値が等しいかどうか比較する場合、文字列が数値に変換できる場合は数値に変換して比較します。例えば数値の 5 と文字列の "5" を比較した場合、文字列は数値の 5 に変換されて数値として比較されます。
数値と文字列の値が等しいかどうか比較する場合、文字列が数値に変換できない場合は両方の値を文字列として比較します。
なお値が等しくないかどうかを判別するには != 演算子または <> 演算子を使います。この演算子を使用した場合、右辺と左辺の値が等しくない場合に TRUE を返します。
では簡単なプログラムで試してみます。
<?php $num2 = 15; echo "10 == 10 は "; echo $num1 == 10 ? "TRUE" : "FALSE", "\n"; echo "15 == 10 は "; echo $num2 == 10 ? "TRUE" : "FALSE", "\n"; $num3 = 27; echo "27 == \"27\" は "; echo $num3 == "27" ? "TRUE" : "FALSE", "\n"; echo "27 == \"27\" は "; echo $num3 == "27" ? "TRUE" : "FALSE", "\n"; $str1 = "東京都"; echo "\"東京都\" == \"東京都\" は "; echo $str1 == "東京都" ? "TRUE" : "FALSE", "\n"; echo "\"東京都\" == \"大阪府\" は "; echo $str1 == "大阪府" ? "TRUE" : "FALSE", "\n"; echo "\"東京都\" == \"東京都港区\" は "; echo $str1 == "東京都港区" ? "TRUE" : "FALSE", "\n";
作成したプログラムを sample.php として保存しました。その後でコマンドプロンプトを起動し、次のように実行しました。
php sample.php
演算子 == を使用することで値が等しいかどうかを判別することができました。
値と型が等しいかどうか
== 演算子の場合は値が等しいかどうかをだけを判別するため、異なる型の値の比較であっても等しくなる場合があります。 === 演算子を使用すると値と型の両方が等しいかどうかを比較します。次の例を見て下さい。
$num = 20;
if ($num === 20){
echo "変数の型と値は 20 と等しい";
}
演算子の右辺と左辺を比較して型と値が等しければ TRUE を返します。上記の場合は型も値も一致しているので TRUE を返します。
=== 演算子の場合は右辺と左辺のデータ型が異なっている場合に型変換は行われません。次の例を見てください。
$num = 20;
if ($num === "20"){
echo "変数の型と値は 20 と等しい";
}
今度の場合は型が異なっているため FALSE を返します。
なお値か型が等しくないかどうかを判別するには !== 演算子を使います。この場合は値か型が等しくない場合に TRUE を返します。
では簡単なプログラムで試してみます。
<?php $num1 = 10; $num2 = 15; echo "10 === 10 は "; echo $num1 === 10 ? "TRUE" : "FALSE", "\n"; echo "15 === 10 は "; echo $num2 === 10 ? "TRUE" : "FALSE", "\n"; echo "10 === \"10\" は "; echo $num1 === 10 ? "TRUE" : "FALSE", "\n"; $str1 = "東京都"; echo "\"東京都\"=== \"東京都\" は "; echo $str1 === "東京都" ? "TRUE" : "FALSE", "\n"; echo "\"東京都\"=== \"大阪府\" は "; echo $str1 === "大阪府" ? "TRUE" : "FALSE", "\n";
作成したプログラムを sample.php として保存しました。その後でコマンドプロンプトを起動し、次のように実行しました。
php sample.php
演算子 === を使用することで値だけでなく型も等しいかどうかを判別することができました。
大小の比較
2 つの値を比較して大きいか小さいかを判別するには < <= > >= 演算子を使います。次の例を見てください。
$num = 20;
if ($num > 10){
echo "変数の値は 10 よりも大きい";
}
if ($num <= 30){
echo "変数の値は 30以下である";
}
演算子の右辺と左辺を使用している演算子によって大小を比較し、真であれば TRUE を返し、偽でれば FALSE を返します。上記の場合はどちらの条件式も TRUE を返します。数値と数値の比較の場合はその数値の大きさを比較します。文字列と文字列の比較の場合は、先頭の文字から順に辞書順で比較します。
大きいか小さいかの比較の場合も自動で型変換が行われます。数値と文字列の比較の場合で、文字列が数値に変換可能な場合は文字列を数値に変換してから比較し、文字列が数値に変換できない場合は両方の値を文字列として比較します。
では簡単なプログラムで試してみます。
<?php $num1 = 10; $num2 = 15; echo "10 > 15 は "; echo $num1 > $num2 ? "TRUE" : "FALSE", "\n"; echo "10 <= 15 は "; echo $num1 <= $num2 ? "TRUE" : "FALSE", "\n"; $str1 = "15"; echo "10 > \"15\" は "; echo $num1 > $str1 ? "TRUE" : "FALSE", "\n"; echo "10 <= \"15\" は "; echo $num1 <= $str1 ? "TRUE" : "FALSE", "\n"; $str2 = "あさがお"; $str3 = "ひるがお"; echo "\"あさがお\" > \"ひるがお\" は "; echo $str2 > $str3 ? "TRUE" : "FALSE", "\n"; echo "\"あさがお\" <= \"ひるがお\" は "; echo $str2 <= $str3 ? "TRUE" : "FALSE", "\n";
作成したプログラムを sample.php として保存しました。その後でコマンドプロンプトを起動し、次のように実行しました。
php sample.php
演算子 > などを使用することで 2 つの値の大小を判別することができました。
-- --
PHP における比較演算子について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。