PHP 提供了3个用于测试变量值的函数,分别是isset()、empty()、is_null(从这里就可以看出PHP系统函数变量名命名的混乱,这也是一直被人诟病的地方)。这几个函数均返回布尔值,有时使用不当会造成意想不到的结果。
比如,用isset()和empty()返回的结果是相反的,但却并非一直如此。
isset()用来检测一个变量是否已声明且值不为null。只能在变量不是null时返回真。
empty()用来检测一个变量是否为空,也就是说有如下情况时返回真值:变量是一个空字符串,false,空数组,null,'',以及被unset删除后的变量。
在PHP5.5之后,empty()函数可以接受任意类型的表达式
is_null()函数用来判断变量内容是否是null,即返回真值的条件仅为变量值是null,值得一提的是,is_null() 是 isset() 的反函数,区别是isset()函数可以应用到未知变量,但is_null()只能针对以声明的变量。
对比项 | | | |
---|
变量值($var) | isset($var) | empty($var) | is_null($var) |
""(空字符串) | bool(true) | bool(true) | bool(false) |
" "(空格) | bool(true) | bool(false) | bool(false) |
FALSE | bool(true) | bool(true) | bool(false) |
TRUE | bool(true) | bool(false) | bool(false) |
array() | bool(true) | bool(true) | bool(true) |
NULL | | bool(true) | bool(true) |