PHP判断和比较null、0、''、false的正确姿势
以下的表格显示了PHP类型和比较运算符在松散和严格比较时的作用。
在使用这些表格之前,需要明白变量类型及它们的意义。例如,"42"是一个字符串而42是一个整数。FALSE是一个布尔值而"false"是一个字符串。
HTML表单并不传递整数、浮点数或者布尔值,它们只传递字符串。要想检测一个字符串是不是数字,可以使用is_numeric()函数。
在没有定义变量$x的时候,诸如if($x)的用法会导致一个E_NOTICE级别的错误。所以,可以考虑用empty()或者isset()函数来初始化变量。
1使用PHP函数对变量$x进行比较
表达式 | gettype() | empty() | is_null() | isset() | boolean:if($x) |
---|---|---|---|---|---|
$x=""; | string | TRUE | FALSE | TRUE | FALSE |
$x=null; | NULL | TRUE | TRUE | FALSE | FALSE |
var$x; | NULL | TRUE | TRUE | FALSE | FALSE |
$xisundefined | NULL | TRUE | TRUE | FALSE | FALSE |
$x=array(); | array | TRUE | FALSE | TRUE | FALSE |
$x=false; | boolean | TRUE | FALSE | TRUE | FALSE |
$x=true; | boolean | FALSE | FALSE | TRUE | TRUE |
$x=1; | integer | FALSE | FALSE | TRUE | TRUE |
$x=42; | integer | FALSE | FALSE | TRUE | TRUE |
$x=0; | integer | TRUE | FALSE | TRUE | FALSE |
$x=-1; | integer | FALSE | FALSE | TRUE | TRUE |
$x="1"; | string | FALSE | FALSE | TRUE | TRUE |
$x="0"; | string | TRUE | FALSE | TRUE | FALSE |
$x="-1"; | string | FALSE | FALSE | TRUE | TRUE |
$x="php"; | string | FALSE | FALSE | TRUE | TRUE |
$x="true"; | string | FALSE | FALSE | TRUE | TRUE |
$x="false"; | string | FALSE | FALSE | TRUE | TRUE |
2松散比较==
3严格比较===
TRUE | FALSE | 1 | 0 | -1 | "1" | "0" | "-1" | NULL | array() | "php" | "" | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
TRUE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
1 | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
0 | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
-1 | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
"1" | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
"0" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE |
"-1" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE |
NULL | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE |
array() | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE |
"php" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE |
"" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE |
参考资料:
- PHP类型比较表