PHP には(少なくとも PHP 5.6.14 までは)厳密な同一比較演算子 (または)はありません が、大きい/小さいをチェックする前に厳密な型チェックを強制する方法がいくつかあります。>==
<==
- 両方の変数タイプを確認してください
if (gettype($a) === gettype($b))
- 必要な型キャストを強制します。
if ((string)$a === (string)$b)
- 必要なタイプジャグルを強制します。
if (($a . '') === ($b . ''))
次の点に注意してください。
- 浮動小数点の精度には制限があります
INF
およびieee754の下NAN
のタイプですfloat
- 一部の無限大は他の一部の無限大に等しい(PHP 5.4 以降)
- 科学表記法
e
は常に 型であり、数値が小さくてもfloat
決して型ではないinteger
- 超える整数
PHP_INT_MAX
は自動的に変換されますfloat
- システムの境界を超えるフロートは
INF
値を取得します
- 未定義の変数の型と値
NULL
- が前に付いている整数は
0
、8 進数から 10 進数に変換されます (慣例により)
0
先頭が整数の整数を含む文字列を整数に変換すると、先頭が取り除かれます0
いくつかのエキゾチックな比較のリスト:
非常に奇妙な:
$a VS. $b $a>$b $a<$b $a<=$b $a>=$b $a==$b $a===$b
float(NAN) float(-INF) false false false false false false
float(NAN) float(0) false false false false false false
float(NAN) float(1) false false false false false false
float(NAN) float(INF) false false false false false false
float(NAN) float(NAN) false false false false false false
float(NAN) int(-1) false false false false false false
float(NAN) int(0) false false false false false false
float(NAN) int(1) false false false false false false
等しいが同一ではない:
$a VS. $b $a>$b $a<$b $a<=$b $a>=$b $a==$b $a===$b
NULL(NULL) array() false false true true true false
NULL(NULL) bool(false) false false true true true false
NULL(NULL) float(0) false false true true true false
NULL(NULL) int(0) false false true true true false
NULL(NULL) str('') false false true true true false
array() bool(false) false false true true true false
bool(false) float(0) false false true true true false
bool(false) int(0) false false true true true false
str('') bool(false) false false true true true false
bool(false) str('0') false false true true true false
float(-INF) bool(true) false false true true true false
bool(true) float(1) false false true true true false
float(INF) bool(true) false false true true true true false
float(NAN) bool(true) false false true true true true false
bool(true) int(-1) false false true true true false
bool(true) int(1) false false true true true false
bool(true) str("\0") false false true true true false
bool(true) str('+') false false true true true false
bool(true) str('-') false false true true true false
bool(true) str('01') false false true true true false
bool(true) str('1') false false true true true false
bool(true) str('false') false false true true true false
str('text') bool(true) false false true true true false
str('true') bool(true) false false true true true false
int(0) float(0) false false true true true false
str("\0") float(0) false false true true true false
str('') float(0) false false true true true false
str('+') float(0) false false true true true false
str('-') float(0) false false true true true false
str('0') float(0) false false true true true false
str('false') float(0) false false true true true false
str('text') float(0) false false true true true false
str('true') float(0) false false true true true false
int(1) float(1) false false true true true true false
float(1) str('01') false false true true true false
float(1) str('1') false false true true true false
str("\0") int(0) false false true true true false
str('') int(0) false false true true true false
str('+') int(0) false false true true true false
str('-') int(0) false false true true true false
int(0) str('0') false false true true true false
str('false') int(0) false false true true true false
str('text') int(0) false false true true true false
str('true') int(0) false false true true true false
int(1) str('01') false false true true true false
int(1) str('1') false false true true true false
str('1') str('01') false false true true true false
ローワーとグレーターを同時に?
$a VS. $b $a>$b $a<$b $a<=$b $a>=$b $a==$b $a===$b
float(NAN) str("\0") true true true true false false
float(NAN) str('') true true true true false false
float(NAN) str('+') true true true true false false
float(NAN) str('-') true true true true false false
float(NAN) str('0') true true true true false false
float(NAN) str('01') true true true true false false
float(NAN) str('1') true true true true false false
float(NAN) str('false') true true true true false false
float(NAN) str('text') true true true true false false
float(NAN) str('true') true true true true false false
等しい AND 同一:
$a VS. $b $a>$b $a<$b $a<=$b $a>=$b $a==$b $a===$b
NULL(NULL) NULL(NULL) false false true true true true
float(-INF) float(-INF) false false true true true true
float(INF) float(INF) false false true true true true
低いか高い:
$a VS. $b $a>$b $a<$b $a<=$b $a>=$b $a==$b $a===$b
NULL(NULL) bool(true) false true true false false false
float(-INF) NULL(NULL) true false false true false false
NULL(NULL) float(1) false true true false false false
float(INF) NULL(NULL) true false false true false false
float(NAN) NULL(NULL) true false false true false false
NULL(NULL) int(-1) false true true false false false
NULL(NULL) int(1) false true true false false false
NULL(NULL) str("\0") false true true false false false
NULL(NULL) str('+') false true true false false false
NULL(NULL) str('-') false true true false false false
NULL(NULL) str('0') false true true false false false
NULL(NULL) str('01') false true true false false false
NULL(NULL) str('1') false true true false false false
NULL(NULL) str('false') false true true false false false
NULL(NULL) str('text') false true true false false false
NULL(NULL) str('true') false true true false false false
array() bool(true) false true true false false false
float(-INF) array() false true true false false false
array() float(0) true false false true false false
array() float(1) true false false true false false
float(INF) array() false true true false false false
float(NAN) array() false true true false false false
array() int(-1) true false false true false false
array() int(0) true false false true false false
array() int(1) true false false true false false
array() str("\0") true false false true false false
str('') array() false true true false false false
array() str('+') true false false true false false
array() str('-') true false false true false false
array() str('0') true false false true false false
array() str('01') true false false true false false
array() str('1') true false false true false false
array() str('false') true false false true false false
array() str('text') true false false true false false
array() str('true') true false false true false false
bool(true) bool(false) true false false true false false
float(-INF) bool(false) true false false true false false
float(1) bool(false) true false false true false false
float(INF) bool(false) true false false true false false
float(NAN) bool(false) true false false true false false
bool(false) int(-1) false true true false false false
int(1) bool(false) true false false true false false
bool(false) str("\0") false true true false false false
bool(false) str('+') false true true false false false
bool(false) str('-') false true true false false false
bool(false) str('01') false true true false false false
str('1') bool(false) true false false true false false
bool(false) str('false') false true true false false false
str('text') bool(false) true false false true false false
str('true') bool(false) true false false true false false
bool(true) float(0) true false false true false false
bool(true) int(0) true false false true false false
str('') bool(true) false true true false false false
bool(true) str('0') true false false true false false
float(-INF) float(0) false true true false false false
float(-INF) float(1) false true true false false false
float(INF) float(-INF) true false false true false false
float(-INF) int(-1) false true true false false false
float(-INF) int(0) false true true false false false
float(-INF) int(1) false true true false false false
float(-INF) str("\0") false true true false false false
float(-INF) str('') false true true false false false
float(-INF) str('+') false true true false false false
float(-INF) str('-') false true true false false false
float(-INF) str('0') false true true false false false
float(-INF) str('01') false true true false false false
float(-INF) str('1') false true true false false false
float(-INF) str('false') false true true false false false
float(-INF) str('text') false true true false false false
float(-INF) str('true') false true true false false false
float(1) float(0) true false false true false false
float(INF) float(0) true false false true false false
float(0) int(-1) true false false true false false
int(1) float(0) true false false true false false
float(0) str('01') false true true false false false
str('1') float(0) true false false true false false
float(INF) float(1) true false false true false false
float(1) int(-1) true false false true false false
float(1) int(0) true false false true false false
float(1) str("\0") true false false true false false
str('') float(1) false true true false false false
float(1) str('+') true false false true false false
float(1) str('-') true false false true false false
float(1) str('0') true false false true false false
float(1) str('false') true false false true false false
str('text') float(1) false true true false false false
str('true') float(1) false true true false false false
float(INF) int(-1) true false false true false false
float(INF) int(0) true false false true false false
float(INF) int(1) true false false true false false
float(INF) str("\0") true false false true false false
float(INF) str('') true false false true false false
float(INF) str('+') true false false true false false
float(INF) str('-') true false false true false false
float(INF) str('0') true false false true false false
float(INF) str('01') true false false true false false
float(INF) str('1') true false false true false false
float(INF) str('false') true false false true false false
float(INF) str('text') true false false true false false
float(INF) str('true') true false false true false false
int(0) int(-1) true false false true false false
int(1) int(-1) true false false true false false
str("\0") int(-1) true false false true false false
str('') int(-1) true false false true false false
str('+') int(-1) true false false true false false
str('-') int(-1) true false false true false false
str('0') int(-1) true false false true false false
int(-1) str('01') false true true false false false
str('1') int(-1) true false false true false false
str('false') int(-1) true false false true false false
str('text') int(-1) true false false true false false
str('true') int(-1) true false false true false false
int(1) int(0) true false false true false false
int(0) str('01') false true true false false false
str('1') int(0) true false false true false false
int(1) str("\0") true false false true false false
str('') int(1) false true true false false false
int(1) str('+') true false false true false false
int(1) str('-') true false false true false false
int(1) str('0') true false false true false false
int(1) str('false') true false false true false false
str('text') int(1) false true true false false false
str('true') int(1) false true true false false false
str('') str("\0") false true true false false false
str('+') str("\0") true false false true false false
str('-') str("\0") true false false true false false
str("\0") str('0') false true true false false false
str("\0") str('01') false true true false false false
str('1') str("\0") true false false true false false
str('false') str("\0") true false false true false false
str('text') str("\0") true false false true false false
str('true') str("\0") true false false true false false
str('') str('+') false true true false false false
str('') str('-') false true true false false false
str('') str('0') false true true false false false
str('') str('01') false true true false false false
str('') str('1') false true true false false false
str('') str('false') false true true false false false
str('') str('text') false true true false false false
str('') str('true') false true true false false false
str('-') str('+') true false false true false false
str('+') str('0') false true true false false false
str('+') str('01') false true true false false false
str('1') str('+') true false false true false false
str('false') str('+') true false false true false false
str('text') str('+') true false false true false false
str('true') str('+') true false false true false false
str('-') str('0') false true true false false false
str('-') str('01') false true true false false false
str('1') str('-') true false false true false false
str('false') str('-') true false false true false false
str('text') str('-') true false false true false false
str('true') str('-') true false false true false false
str('0') str('01') false true true false false false
str('1') str('0') true false false true false false
str('false') str('0') true false false true false false
str('text') str('0') true false false true false false
str('true') str('0') true false false true false false
str('false') str('01') true false false true false false
str('text') str('01') true false false true false false
str('true') str('01') true false false true false false
str('1') str('false') false true true false false false
str('text') str('1') true false false true false false
str('true') str('1') true false false true false false
str('text') str('false') true false false true false false
str('true') str('false') true false false true false false
str('true') str('text') true false false true false false
$a > $b > $c
次の場合の難問:$a
が より大きくない$c
。
A<C : float(NAN) > str('a') > str('')
A<C : float(NAN) > str('a') > str('1')
A<C : float(NAN) > str('a') > str('A')
A<C : float(NAN) > str('a') > str('0')
A<C : float(NAN) > str('1') > str('')
A<C : float(NAN) > str('1') > str('0')
A<C : float(NAN) > str('A') > str('')
A<C : float(NAN) > str('A') > str('1')
A<C : float(NAN) > str('A') > str('0')
A<C : float(NAN) > str('0') > str('')
A<C : str('') > float(NAN) > str('a')
A<C : str('') > float(NAN) > str('1')
A<C : str('') > float(NAN) > str('A')
A<C : str('') > float(NAN) > str('0')
A<C : str('a') > str('') > float(NAN)
A<C : str('a') > str('1') > float(NAN)
A<C : str('a') > str('A') > float(NAN)
A<C : str('a') > str('0') > float(NAN)
A<C : str('0') > str('') > float(NAN)
A==C : bool(true) > str('') > float(NAN)
A==C : bool(true) > str('') > float(-INF)
A==C : bool(true) > str('') > int(-1)
A==C : bool(true) > str('') > float(-1)
A==C : bool(true) > array() > float(NAN)
A==C : bool(true) > array() > float(INF)
A==C : bool(true) > array() > float(-INF)
A==C : bool(true) > array() > str('a')
A==C : bool(true) > array() > int(1)
A==C : bool(true) > array() > float(1)
A==C : bool(true) > array() > str('1')
A==C : bool(true) > array() > str('A')
A==C : bool(true) > array() > int(-1)
A==C : bool(true) > array() > float(-1)
A==C : bool(true) > int(0) > float(-INF)
A==C : bool(true) > int(0) > int(-1)
A==C : bool(true) > int(0) > float(-1)
A==C : bool(真) > str('0') > float(NAN)
A==C : bool(true) > str('0') > float(-INF)
A==C : bool(true) > str('0') > int(-1)
A==C : bool(true) > str('0') > float(-1)
A==C : bool(true) > float(0) > float(-INF)
A==C : bool(true) > float(0) > int(-1)
A==C : bool(true) > float(0) > float(-1)
A==C : int(1) > str('a') > str('1')
A==C : int(1) > str('A') > str('1')
A==C : float(1) > str('a') > str('1')
A==C : float(1) > str('A') > str('1')
A==C : str('a') > str('1') > int(0)
A==C : str('a') > str('1') > float(0)
A==C : str('') > float(-INF) > NULL(NULL)
A==C : str('') > float(-INF) > bool(false)
A==C : str('') > int(-1) > NULL(NULL)
A==C : str('') > int(-1) > bool(false)
A==C : str('') > float(-1) > NULL(NULL)
A==C : str('') > float(-1) > bool(false)
A==C : array() > float(NAN) > NULL(NULL)
A==C : array() > float(NAN) > bool(false)
A==C : array() > float(INF) > NULL(NULL)
A==C : array() > float(INF) > bool(false)
A==C : array() > float(-INF) > NULL(NULL)
A==C : array() > float(-INF) > bool(false)
A==C : array() > str('a') > NULL(NULL)
A==C : array() > str('a') > bool(false)
A==C : array() > int(1) > NULL(NULL)
A==C : array() > int(1) > bool(false)
A==C : array() > float(1) > NULL(NULL)
A==C : array() > float(1) > bool(false)
A==C : array() > str('1') > NULL(NULL)
A==C : array() > str('1') > bool(false)
A==C : array() > str('A') > NULL(NULL)
A==C : array() > str('A') > bool(false)
A==C : 配列() > str('0') > NULL(NULL)
A==C : array() > int(-1) > NULL(NULL)
A==C : array() > int(-1) > bool(false)
A==C : array() > float(-1) > NULL(NULL)
A==C : array() > float(-1) > bool(false)
A==C : str('') > float(NAN) > bool(false)
A==C : str('') > float(NAN) > NULL(NULL)
A==C : str('A') > str('1') > int(0)
A==C : str('A') > str('1') > float(0)
A==C : int(0) > float(-INF) > NULL(NULL)
A==C : int(0) > float(-INF) > bool(false)
A==C : int(0) > int(-1) > NULL(NULL)
A==C : int(0) > int(-1) > bool(false)
A==C : int(0) > float(-1) > NULL(NULL)
A==C : int(0) > float(-1) > bool(false)
A==C : str('0') > float(NAN) > bool(false)
A==C : str('0') > float(-INF) > bool(false)
A==C : str('0') > int(-1) > bool(false)
A==C : str('0') > float(-1) > bool(false)
A==C : float(0) > float(-INF) > NULL(NULL)
A==C : float(0) > float(-INF) > bool(false)
A==C : float(0) > int(-1) > NULL(NULL)
A==C : float(0) > int(-1) > bool(false)
A==C : float(0) > float(-1) > NULL(NULL)
A==C : float(0) > float(-1) > bool(false)
A===C : str('0') > float(NAN) > str('0')
A===C : str('') > float(NAN) > str('')
A===C : str('a') > float(NAN) > str('a')
A===C : str('1') > float(NAN) > str('1')
A===C : str('A') > float(NAN) > str('A')
楽しい文字列比較: 'Queen' >
'King' >
'Jack' >
'Ace'
ペアをカバーするPHP 型比較表もチェックしてください。
isset()
とis_null()
if()
とempty()
- ブール値
==
vs.===
にある PHP バージョン間の違いを確認してください。http://3v4l.org/MAfDu。