PHP - 比較演算子と boolean

公開日:2020-12-22 更新日:2020-12-22
[PHP]

1. 概要

等号や不等号などの比較演算子を使って、2つの値を比較することができます。
比較した結果は、その式が成り立つ時は true、成り立たない時は false になります。
この true と false は、数値や文字列ではなく、boolean(または bool)と言う型になります。

var_dump( 10 > 1 );
var_dump( 10 < 1 );
実行結果
bool(true)
bool(false)

比較演算子の結果(boolean)を変数に代入することもできます。
$a = 10 > 1;
var_dump($a);
実行結果
bool(true)

true や false を直接変数に代入することもできます。
$a = true;
var_dump($a);
実行結果
bool(true)

2. 比較演算子

演算子説明
>> 左辺が右辺より大きい場合 true
>=≧ 左辺が右辺より大きいか等しい場合 true
=== 左辺と右辺が等しい場合 true。= が1つだと代入として扱われるので要注意。
<=≦ 左辺が右辺より小さいか等しい場合 true
<< 左辺が右辺より小さい場合 true
!=≠ 左辺と右辺が異なる場合 true
===厳格な ==
!==厳格な !=
<=>宇宙船演算子

3. 宇宙船演算子

左辺と右辺を比較して、
左辺が大きければ 1、
右辺が大きければ -1、
等しい場合 0 になります。
var_dump(10 <=>  1);
var_dump(10 <=>  5);
var_dump(10 <=> 10);
var_dump(10 <=> 15);
var_dump(10 <=> 20);
実行結果
int(1)
int(1)
int(0)
int(-1)
int(-1)

4. 厳格な比較

文字列と数値を == で比較した場合、自動的に文字列が数値に変換されて比較されます。
型を含めて厳格な比較をしたい場合は、=== を使います。
var_dump('123' == 123);
var_dump('123' === 123);
実行結果
bool(true)
bool(false)

厳格に異なることを確認したい場合は、!== を使います。
var_dump('123' != 123);
var_dump('123' !== 123);
実行結果
bool(false)
bool(true)

また、空文字「""」、false、null、0、"0" は、== で比較すると、同じものとして判定される場合があります。
厳格な比較をする場合は、=== を使ってください。
var_dump(0 == 0);
var_dump(0 == "0");
var_dump(0 == null);
var_dump(0 == false);
var_dump(0 == "");
実行結果
bool(true)
bool(true)
bool(true)
bool(true)
bool(false)

5. 文字列の比較

文字列の比較も行えます。
比較は文字コード(数値)で行われています。
var_dump("a" > "z");
var_dump("z" > "a");
var_dump("zzz" > "aaa");
var_dump("aaa1" > "aaa2");
var_dump("abc" == "abc");
実行結果
bool(false)
bool(true)
bool(true)
bool(false)
bool(true)

6. 否定

bool の値の前に「!」を付けると、true と false を反転します。
$a = false;
$a = !$a;
var_dump($a);
$a = !$a;
var_dump($a);
実行結果
bool(true)
bool(false)

また、比較演算子の前に「!」を付けることもできます。
次の例では、$v が 10 以上でないなら true になります。
$v = 1;
var_dump( !($v >= 10) );
実行結果
bool(true)