比較演算子は、その名前が示すように、二つの値を比較します。
表 15-4. 比較演算子
例 | 名前 | 結果 |
---|---|---|
$a == $b | 等しい | $a が $b に等しい時に TRUE。 |
$a === $b | 等しい | $a が $b に等しく同じ型でである場合に TRUE (PHP 4 で導入)。 |
$a != $b | 等しくない | $a が $b に等しくない場合に TRUE。 |
$a <> $b | 等しくない | $a が $b に等しくない場合に TRUE |
$a !== $b | 等しくない | $a が $b と等しくないか、同じ型でない場合に TRUE (PHP 4 で導入)。 |
$a < $b | より少ない | $a が $b より少ない時に TRUE。 |
$a > $b | より多い | $a が $b より多い時に TRUE。 |
$a <= $b | より少ないか等しい | $a が $b より少ないか等しい時に TRUE。 |
$a >= $b | より多いか等しい | $a が $b より多いか等しい時に TRUE。 |
整数値を文字列と比較する際、文字列が 数値に変換されます。 数値形式の文字列を比較する場合、それは整数として比較されます。これらの ルールは、 switch 文にも適用されます。
<?php |
多くの型では、以下の表に(上から順に)したがって比較が行われます。
表 15-5. さまざまな型の比較
第 1 オペランドの型 | 第 2 オペランドの型 | 結果 |
---|---|---|
null または string | string | NULL を "" に変換し、数値または文字として比較します |
bool または null | あらゆる型 | bool に変換し、FALSE < TRUE と判断します |
object | object | 組み込みクラスには独自の比較基準が定義されています。それ以外の クラスは比較できません。同じクラスであるかどうかは - プロパティが 同じ値であるかどうかを配列形式で比較(PHP 4)、PHP 5 では ここで説明されています。 |
string, resource または number | string, resource または number | 文字列やリソースを数値に変換し、算術演算を行います |
array | array | 要素数の少ない配列のほうが小さくなります。オペランド 1 のキーが オペランド 2 に存在しない場合、配列は比較できません。そうでない場合は 個々の要素の値を比較します(以下の例を参照ください) |
array | あらゆる型 | array のほうが常に大きくなります |
object | あらゆる型 | object のほうが常に大きくなります |
strcasecmp(), strcmp()、 配列演算子, マニュアルの 型 のセクションも参照してください。
もうひとつの条件演算子として "?:"(あるいは三項)演算子があります。
注意: 三項演算子は式であり、値としては評価されずに式の結果として評価される ことに注意してください。演算結果をリファレンスとして返したい場合に、 これを知っておくことが大切です。結果をリファレンスとして返す関数で return $var == 42 ? $a : $b; とすることはできず、 新しいバージョンの PHP では警告を発生します。