变量在所有计算机语言中均有提供,它用来保存数值、文本、对象等内容。我们可以把变量看作一个有名称的桶,里面放着一个值,这个值可以是数字、字符串或对象,以及包含你想到的任何合法的内容。
PHP提供了3个用于测试变量值的函数,分别是:isset()、empty()和is_null()。这几个函数均返回布尔值,有时使用不当会造成意想不到的结果,需要详细说明。
比如,用isset()和empty()返回的结果是相反的,但有时却并非一直如此,下面我们一起来了解这几个函数的具体区别。
isset()用来检测一个变量是否已声明且值不为NULL。换句话说,只能在变量值不是NULL时返回真值。
empty()用来检测一个变量是否为空,也就是说有如下情况时返回真值:变量是一个空字符串,false,空数组[array()],NULL,0,'',以及被unset删除后的变量。
提示 在PHP5.5之后,empty()函数可以接受任意类型的表达式。
正确地检查一个变量是否为空,可使用如下格式:
if(empty($approve)){ //etc }
这种形式可适用在PHP的任意版本中。如果你用的是PHP5.5以上版本,可以使用如下格式:
if(empty(0)){ //etc } if(empty(CreateNew())){ //etc }
以上格式在PHP5.5以上版本中均可以使用,如果小于该版本会返回解析错误。
is_null()函数用来判断变量内容是否是NULL值,即返回真值的条件仅为变量是NULL时。值得一提的是,is_null()是isset()函数的反函数,区别是isset()函数可以应用到未知变量,但is_null()只能针对已声明变量。
我们用一张表格来汇总这些函数返回值的不同之处(表1-1),表中空白表示函数返回布尔值假(false)。
表1-1 测试函数返回值的区别