比較演算子比較演算子は、その名前が示すように、二つの値を比較します。 型の比較表 に、型に関連するさまざまな比較の例があります。
オペランドが両方
数値形式の文字列 の場合、
もしくは一方が数値で、もう一方が
数値形式の文字列 の場合、
比較は数値として行われます。
これらのルールは
switch 文にも適用されます。
型の変換は
演算子が 警告
PHP 8.0.0 より前のバージョンでは、 文字列が数値または数値形式の文字列の場合、文字列は比較する前に数値に変換されていました。 これによって、以下の例で見られるような驚きの結果が生じる場合があります:
上の例の PHP 7 での出力は、このようになります。 bool(true) bool(true) bool(true) bool(true) 0 上の例の PHP 8 での出力は、このようになります。: bool(false) bool(true) bool(true) bool(true) a
多くの型では、以下の表にしたがって(上から順に)比較が行われます。
例1 Boolean/null の比較
例2 一般的な配列の比較
警告
浮動小数点数値の比較ふたつの float 値が等しいかどうかを調べてはいけません。 float の内部的な表現方法がその理由です。 詳細な情報は float のドキュメントを参照ください。
比較できない値
( 三項演算子もうひとつの条件演算子として "?:"(あるいは三項)演算子があります。 例3 デフォルト値を設定する
(expr1) ? (expr2) : (expr3)
という式は、式1 が true の場合に
式2 を、
式1 が false の場合に
式3 を値とします。
三項演算子のまんなかの部分をなくすこともできます。
式
Null 合体演算子別の便利な短縮形式の演算子として、 "??" 演算子 (Null 合体演算子) を使うことが出来ます。 例6 デフォルト値の代入
(expr1) ?? (expr2) は、
expr1 が null である場合は expr2
と評価され、それ以外の場合は expr1 と評価されます。
この演算子は、左側の値が存在しない場合でも notice や warning が発生しません。 isset と同じ挙動です。 これは、配列のキーを扱う場合に便利です。
|