PHP提供了三个用于测试变量值的函数,分别是:isset()、empty()、is_null(),这些函数的返回值均是布尔值,区别如下:
- isset()用于检测一个变量是否已经声明并且值不为NULL,即只能在变量值不是NULL是返回其值
- empty()用户检测一个变量是否为空,即当变量不是空字符串、false、空数组[array()]、NULL、0、''、被unset()后的变量是,返回真值
//PHP5.5之后,empty()可以接受任意类型的表达式
empty(myFunc()); //合法的
empty($var); //合法的
empty(0); //合法的
//PHP5.5之前,empty()只能接受变量值
empty($var); //合法的
empty(myFunc()); //不合法的
empty(0); //不合法的
- is_null()用于判断变量内容是否是NULL值,即返回真值的条件仅为变量是NULL值。is_null()是isset()的反函数,区别是isset()函数可以应用到未知变量,而is_null()只能针对已声明变量
| 变量值($var) | isset($var) | empty($var) | is_null($var) |
|---|---|---|---|
| "" (空字符串) | bool(true) | bool(true) | |
| " " (空格) | bool(true) | ||
| FALSE | bool(true) | bool(true) | |
| TRUE | bool(true) | ||
| array() (空数组) | bool(true) | bool(true) | |
| NULL | bool(true) | bool(true) | |
| "0" (字符串) | bool(true) | bool(true) | |
| 0 (整型值) | bool(true) | bool(true) | |
| 0.0 (浮点值) | bool(true) | bool(true) | |
| NULL byte ('\0') | bool(true) | ||
| var $var; (变量声明,没赋值) | bool(true) | bool(true) |