PHP中没有 严格的相同比较运算符(>==
或<==
)(至少在 PHP 5.6.14 中),但有几种方法可以在检查大/小之前强制执行严格的类型检查:
- 检查两种变量类型
if (gettype($a) === gettype($b))
- 强制您需要的类型转换,例如。
if ((string)$a === (string)$b)
- 强制您需要的类型杂耍,例如。
if (($a . '') === ($b . ''))
请注意:
- 浮点精度有限
INF
并且NAN
是ieee754float
下的类型
- 一些Infinity等于一些其他Infinity(自 PHP 5.4 起)
- 科学记数法
e
总是有类型的,即使数量很小float
也从来没有。integer
- 整数会
PHP_INT_MAX
自动转换为float
- 在系统边界上浮动获得
INF
值
- 未定义变量的类型和值
NULL
- 前面的整数
0
从八进制转换为十进制(按约定)
- 将包含带有前导的整数的字符串转换
0
为整数会去除前导0
一些奇特的比较列表:
很奇怪:
$一个VS。$b $a>$b $a<$b $a<=$b $a>=$b $a==$b $a===$b
浮动(NAN)浮动(-INF)假假假假假假假
浮动(南)浮动(0)假假假假假假假
浮动(南) 浮动(1) 假假假假假假假
浮动(NAN) 浮动(INF) 假假假假假假
浮动(南) 浮动(南) 假假假假假假假
float(NAN) int(-1) 假假假假假假
float(NAN) int(0) 假 假 假 假 假 假
float(NAN) int(1) 假 假 假 假 假 假
相等但不相同:
$一个VS。$b $a>$b $a<$b $a<=$b $a>=$b $a==$b $a===$b
NULL(NULL) array() 假 假 真 真 真 假
NULL(NULL) bool(false) false false true true true false
NULL(NULL) float(0) 假 假 真 真 真 假
NULL(NULL) int(0) 假 假 真 真 真 假
NULL(NULL) str('') 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
浮动(INF)布尔(真)假假真真真假
float(NAN) bool(true) false false 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) 假 假 真 真 真 假
str("\0") float(0) false false true true true false
str('') float(0) 假 假 真 真 真 假
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) 假 假 真 真 真 假
float(1) str('01') 假 假 真 真 真 假
float(1) str('1') 假 假 真 真 真 假
str("\0") int(0) false false true true true false
str('') int(0) 假 假 真 真 真 假
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) 假 假 真 真 真 假
str('text') int(0) false false true true true false
str('true') int(0) false false true true true false
int(1) str('01') 假 假 真 真 真 假
int(1) str('1') 假 假 真 真 真 假
str('1') str('01') false false true true true false
同时降低和提高?
$一个VS。$b $a>$b $a<$b $a<=$b $a>=$b $a==$b $a===$b
float(NAN) str("\0") 真真真真假假
float(NAN) str('') true true true false false
float(NAN) str('+') true true true false false
float(NAN) str('-') true true true false false
float(NAN) str('0') true true true false false
float(NAN) str('01') true true true false false
float(NAN) str('1') true true true false false
float(NAN) str('false') true true true false false
float(NAN) str('text') true true true false false
float(NAN) str('true') true true true false false
相等且相同:
$一个VS。$b $a>$b $a<$b $a<=$b $a>=$b $a==$b $a===$b
NULL(NULL) NULL(NULL) 假 假 真 真 真 真
浮动(-INF) 浮动(-INF) 假 假 真 真 真 真
浮动(INF)浮动(INF)假假真真真真真假
更低或更高:
$一个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) 真假假真假假
NULL(NULL) float(1) 假真真假假假
浮动(INF) NULL(NULL) 真假假真假假
float(NAN) NULL(NULL) 真假假真假假
NULL(NULL) int(-1) false true true false false false
NULL(NULL) int(1) 假真真假假假
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
数组()布尔(真)假真真假假假
浮动(-INF)数组()假真真假假假假
数组()浮点(0)真假假真假假
数组()浮点数(1)真假假真假假
浮动(INF)数组()假真真假假假
浮动(NAN)数组()假真真假假假
array() int(-1) 真假假真假假
array() int(0) 真假假真假假
array() int(1) 真假假真假假
array() str("\0") 真假假真假假
str('') 数组() 假真真假假假
array() str('+') true false false true false false
array() str('-') true false false true false false
array() str('0') 真假假真假假
array() str('01') 真假假真假假
array() str('1') 真假假真假假
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
布尔(真)布尔(假)真假假真假假
浮动(-INF)布尔(假)真假假真假假
float(1) bool(false) true false false true false false
浮动(INF)布尔(假)真假假假真假假
浮动(南)布尔(假)真假假假真假假
bool(false) int(-1) false true true false false false
int(1) bool(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
浮动(-INF)浮动(0)假真真假假假
浮动(-INF)浮动(1)假真真假假假
浮动(INF)浮动(-INF)真假假真假假
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
浮动(1) 浮动(0) 真假假真假假
浮动(INF)浮动(0)真假假真假假
float(0) int(-1) 真假假假真假假
int(1) float(0) 真假假真假假
float(0) str('01') false true true false false false
str('1') float(0) 真假假真假假
浮动(INF)浮动(1)真假假真假假
float(1) int(-1) 真假假真假假
float(1) int(0) 真假假真假假
float(1) str("\0") 真假假真假假
str('') float(1) 假真真假假假
float(1) str('+') 真假假真假假
float(1) str('-') true false false true false false
float(1) str('0') 真假假真假假
float(1) str('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) 真假假真假假
float(INF) int(0) 真假假假真假假
float(INF) int(1) 真假假真假假
float(INF) str("\0") 真假假真假假
float(INF) str('') 真假假假真假假
float(INF) str('+') 真假假真假假
float(INF) str('-') 真假假真假假
浮动(INF)str('0')真假假真假假
浮动(INF)str('01')真假假真假假
浮动(INF)str('1')真假假真假假
float(INF) str('false') 真假假真假假
浮动(INF)str('文本')真假假真假假
float(INF) str('true') 真假假真假假
int(0) int(-1) 真假假真假假
int(1) int(-1) 真假假真假假
str("\0") int(-1) 真假假真假假
str('') int(-1) 真假假真假假
str('+') int(-1) 真假假真假假
str('-') int(-1) true false false true false false
str('0') int(-1) 真假假真假假
int(-1) str('01') false true true false false false
str('1') int(-1) 真假假真假假
str('false') int(-1) 真假假真假假
str('text') int(-1) true false false true false false
str('true') int(-1) 真假假真假假
int(1) int(0) 真假假真假假
int(0) str('01') false true true false false false
str('1') int(0) 真假假真假假
int(1) str("\0") 真假假真假假
str('') int(1) 假真真假假假
int(1) str('+') 真假假真假假
int(1) str('-') 真假假真假假
int(1) str('0') 真假假真假假
int(1) str('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") 真假假真假假
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('+') 真假假真假假
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') 真假假真假假
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 : 浮点数(NAN) > str('1') > str('0')
A<C : float(NAN) > str('A') > str('')
A<C : float(NAN) > str('A') > str('1')
A<C : 浮点数(NAN) > str('A') > str('0')
A<C : 浮点数(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(true) > 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 : 浮点数(1) > str('a') > str('1')
A==C : 浮点数(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:数组()>浮点(南)>空(空)
A==C:数组()>浮点(南)>布尔(假)
A==C:数组()>浮点(INF)>空(空)
A==C:数组()>浮点(INF)>布尔(假)
A==C:数组()>浮点(-INF)>空(空)
A==C:数组()>浮点(-INF)>布尔(假)
A==C : 数组() > str('a') > NULL(NULL)
A==C : 数组() > str('a') > bool(false)
A==C : 数组() > int(1) > NULL(NULL)
A==C : 数组() > int(1) > bool(false)
A==C:数组()>浮点(1)>空(空)
A==C:数组()>浮点(1)>布尔(假)
A==C : 数组() > str('1') > NULL(NULL)
A==C : 数组() > str('1') > bool(false)
A==C : 数组() > str('A') > NULL(NULL)
A==C : 数组() > str('A') > bool(false)
A==C : 数组() > str('0') > NULL(NULL)
A==C : 数组() > int(-1) > NULL(NULL)
A==C:数组()> int(-1)> bool(假)
A==C:数组()>浮点(-1)>空(空)
A==C:数组()>浮点(-1)>布尔(假)
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 : 浮点数(0) > 浮点数(-INF) > NULL(NULL)
A==C:浮点(0)>浮点(-INF)>布尔(假)
A==C : 浮点数(0) > int(-1) > NULL(NULL)
A==C : 浮点数(0) > int(-1) > bool(false)
A==C:浮点(0)>浮点(-1)>空(空)
A==C:浮点(0)>浮点(-1)>布尔(假)
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()
- 布尔值
==
与===
检查实时 PHP 版本之间的差异。http://3v4l.org/MAfDu。