PHP 中没有 严格相同的比较运算符(>==
或<==
)(至少由PHP 5.6.14所支持),但是在检查Greater / Lower之前,有几种方法可以执行严格的类型检查:
- 检查两个变量类型
if (gettype($a) === gettype($b))
- 强制进行所需的类型转换,例如。
if ((string)$a === (string)$b)
- 强制您需要的类型变戏法。
if (($a . '') === ($b . ''))
请注意:
- 浮点精度受到限制
INF
和NAN
是类型的float
下ieee754
- 某些Infinity等于其他Infinity(自PHP 5.4起)
- 科学计数法
e
始终是类型float
,integer
即使数目很小也永远不会
- 整数将
PHP_INT_MAX
自动转换为float
- 在系统边界上浮动会获得
INF
价值
- 未定义变量的类型和值
NULL
- 前面的整数
0
从八进制转换为十进制(按照惯例)
- 具有前导转化含的整数字符串
0
到整数条的主导0
一些异国比较的列表:
很奇怪:
$ aVS。$ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
float(NAN)float(-INF)假假假假假假
float(NAN)float(0)假假假假假假
float(NAN)float(1)假假假假假假
float(NAN)float(INF)否否否否否否
float(NAN)float(NAN)假假假假假假
float(NAN)int(-1)否否否否否否
float(NAN)int(0)否否否否否否
float(NAN)int(1)否否否否否否
相等但不相同:
$ aVS。$ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
NULL(NULL)array()否否true true true true false
NULL(NULL)bool(false)否否true true true true false
NULL(NULL)float(0)否否真是真真假
NULL(NULL)int(0)否否真真真真假
NULL(NULL)str('')否否真真真假
array()bool(false)否否true true true true false
bool(false)float(0)false否true true true true false
bool(false)int(0)否否true true true true false
str('')bool(false)假否真真真假
bool(false)str('0')否否真真真假
float(-INF)bool(true)假假真真真假
bool(true)float(1)假否真真真假
float(INF)bool(true)假假真真真假
float(NAN)bool(true)假假真真真假
bool(true)int(-1)否false否true true真false
bool(true)int(1)假否真真真假
bool(true)str(“ \ 0”)否否真真真假
bool(true)str('+')否否否否是否否
bool(true)str('-')否否否否否否
bool(true)str('01')否否真是真真假
bool(true)str('1')否否真是真真假
bool(true)str('false')否否真是真真假
str('text')bool(true)假假真真真假
str('true')bool(true)假假真真真假
int(0)float(0)假否真真真假
str(“ \ 0”)float(0)假假真真真假
str('')float(0)假否真真真假
str('+')float(0)假假真真真假
str('-')float(0)假假真真真假
str('0')float(0)假假真真真假
str('false')float(0)否否true true true true false
str('text')float(0)假假真真真假
str('true')float(0)假假真真真假
int(1)float(1)假假真真真假
float(1)str('01')否否真真真假
float(1)str('1')否否真真真假
str(“ \ 0”)int(0)假假真真真假
str('')int(0)假假真真真假
str('+')int(0)假假真真真假
str('-')int(0)假假真真真假
int(0)str('0')假假真真真假
str('false')int(0)否否真真真真假
str('text')int(0)假假真真真假
str('true')int(0)假假真真真假
int(1)str('01')假假真真真假
int(1)str('1')假假真真真假
str('1')str('01')假假真真真假
同时降低和提高?
$ aVS。$ 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
相等且相同:
$ aVS。$ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
NULL(NULL)NULL(NULL)假假真真真真
float(-INF)float(-INF)假假真真真真
float(INF)float(INF)假假真真真真
较低或较高:
$ aVS。$ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
NULL(NULL)bool(true)假真真假假假
float(-INF)NULL(NULL)是否否是否否
NULL(NULL)float(1)否是true是false false false
float(INF)NULL(NULL)是否否是否否
float(NAN)NULL(NULL)是否否是否否
NULL(NULL)int(-1)假真真假假假
NULL(NULL)int(1)否是true是false false false
NULL(NULL)str(“ \ 0”)否是否否否
NULL(NULL)str('+')假真真假假假
NULL(NULL)str('-')假真真假假假假
NULL(NULL)str('0')假真真假假假
NULL(NULL)str('01')假真真假假假
NULL(NULL)str('1')假真真假假假
NULL(NULL)str('false')假真真假假假
NULL(NULL)str('text')假真真假假假假
NULL(NULL)str('true')假真真假假假
array()bool(true)假真真假假假
float(-INF)array()假真真假假假
array()float(0)是否否是否否
array()float(1)是否否是否否
float(INF)array()假真真假假假
float(NAN)array()否是否否否
array()int(-1)是否否是否否
array()int(0)是否否是否否
array()int(1)是否否是否是
array()str(“ \ 0”)是否否是否否
str('')array()假真真假假假
array()str('+')true假false true假false
array()str('-')true假false true假false
array()str('0')true假false true假false
array()str('01')true假false true假false
array()str('1')true假false true假false
array()str('false')是否否是否否
array()str('text')true假false true假false
array()str('true')是否否是否否
bool(true)bool(false)是否否是否否
float(-INF)bool(false)是否否是否否
float(1)bool(false)是否否是否否
float(INF)bool(false)是否否是否否
float(NAN)bool(false)是否否是否否
bool(false)int(-1)false true true true false false false
int(1)bool(false)是否否是否否
bool(false)str(“ \ 0”)否是否否否
bool(false)str('+')false true是false false false
bool(false)str('-')假真真假假假
bool(false)str('01')false是true是false false false
str('1')bool(false)是否否是否否
bool(false)str('false')假真真假假假
str('text')bool(false)是否否是否否
str('true')bool(false)是否否是否否
bool(true)float(0)是否否是否否
bool(true)int(0)是否否是否否
str('')bool(true)假真真假假假
bool(true)str('0')是否否是否否
float(-INF)float(0)假真是假假假
float(-INF)float(1)假真真假假假
float(INF)float(-INF)是否否是否否
float(-INF)int(-1)假真真假假假
float(-INF)int(0)否是true是false false false
float(-INF)int(1)假真真假假假假
float(-INF)str(“ \ 0”)否是否否否
float(-INF)str('')假真真假假假
float(-INF)str('+')假真真假假假
float(-INF)str('-')假真真假假假
float(-INF)str('0')假真真假假假
float(-INF)str('01')假真真假假假
float(-INF)str('1')假真真假假假假
float(-INF)str('false')假真真假假假
float(-INF)str('text')假真真假假假假
float(-INF)str('true')假真真假假假
float(1)float(0)是否否是否否
float(INF)float(0)是否否是否否
float(0)int(-1)是否否是否否
int(1)float(0)是否否是否否
float(0)str('01')假真真假假假
str('1')float(0)是否否是否否
float(INF)float(1)是否否是否否
float(1)int(-1)是否否是否否
float(1)int(0)是否否是否否
float(1)str(“ \ 0”)真假假真假假
str('')float(1)假真真假假假
float(1)str('+')true假false true假false
float(1)str('-')true假false true假false
float(1)str('0')是否否是否否
float(1)str('false')是否否是否否
str('text')float(1)假真真假假假
str('true')float(1)假真真假假假
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('-')true假false true假false
float(INF)str('0')是否否是否否
float(INF)str('01')是否否是否否
float(INF)str('1')是否否是否否
float(INF)str('false')是否否是否否
float(INF)str('text')true假false true假false
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)真假假真假假
str('0')int(-1)是否否是否否
int(-1)str('01')假真真假假假
str('1')int(-1)真假假真假假
str('false')int(-1)是否否是否否
str('text')int(-1)是否否是否是否
str('true')int(-1)是否否是否否
int(1)int(0)是否否是否否
int(0)str('01')假真真假假假
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)假真真假假假假
str('true')int(1)假真真假假假
str('')str(“ \ 0”)假真真假假假
str('+')str(“ \ 0”)是否否是否否
str('-')str(“ \ 0”)是否否是否否
str(“ \ 0”)str('0')false true true false false false
str(“ \ 0”)str('01')假真真假假假
str('1')str(“ \ 0”)是否否是否否
str('false')str(“ \ 0”)是否否是否否
str('text')str(“ \ 0”)是否否是否否
str('true')str(“ \ 0”)是否否是否否
str('')str('+')假真真假假假
str('')str('-')假真真假假假
str('')str('0')假真真假假假
str('')str('01')假真真假假假
str('')str('1')假真真假假假
str('')str('false')假真真假假假
str('')str('text')假真真假假假
str('')str('true')假真真假假假
str('-')str('+')true假false true假false
str('+')str('0')假真真假假假
str('+')str('01')假真真假假假
str('1')str('+')是否否是否否
str('false')str('+')是否否是否否
str('text')str('+')true假false true假false
str('true')str('+')是否否是否否
str('-')str('0')假真真假假假
str('-')str('01')假真真假假假假
str('1')str('-')是否否是否否
str('false')str('-')是否否是否否
str('text')str('-')true假false true假false
str('true')str('-')是否否是否否
str('0')str('01')假真真假假假
str('1')str('0')是否否是否否
str('false')str('0')是否否是否否
str('text')str('0')true假false true假false
str('true')str('0')是否否是否否
str('false')str('01')是否否是否否
str('text')str('01')true假false true假false
str('true')str('01')是否否是否否
str('1')str('false')假真真假假假
str('text')str('1')true假false true假false
str('true')str('1')是否否是否否
str('text')str('false')是否否是否否
str('true')str('false')是否否是否否
str('true')str('text')是否否是否否
$a > $b > $c
难题何时:$a
不大于$c
。
A <C:浮点数(NAN)> str('a')> str('')
A <C:浮点数(NAN)> str('a')> str('1')
A <C:浮点数(NAN)> str('a')> str('A')
A <C:浮点(NAN)> str('a')> str('0')
A <C:浮点数(NAN)> str('1')> str('')
A <C:浮点(NAN)> str('1')> str('0')
A <C:浮点数(NAN)> str('A')> str('')
A <C:浮点数(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('')>浮点数(NAN)> str('1')
A <C:str('')> float(NAN)> str('A')
A <C:str('')>浮点数(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: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(空)
A == C:str('')> int(-1)> bool(假)
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:array()> 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)>浮点(-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(假)
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(假)
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:浮点数(0)>整数(-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('')>浮点数(NAN)> str('')
A === C:str('a')>浮点数(NAN)> str('a')
A === C:str('1')> float(NAN)> str('1')
A === C:str('A')>浮点数(NAN)> str('A')
有趣的字符串比较:“皇后”,>
“国王”,>
“杰克”,>
“王牌”
还要检查涵盖对的PHP类型比较表:
isset()
和 is_null()
if()
和 empty()
- 布尔
==
vs.===
检查PHP版本之间的差异。http://3v4l.org/MAfDu。
($a > $b) !== ($b < $a)
吗?