PHP空值检测函数与方法汇总
几乎任何入口的HTTP请求我们都会去检测它携带的参数,类似isset()empty()的函数一定不少见。
以下的测试结果基于PHP7.16
是否定义判断:isset()
可以使用isset()函数判断一个变量是否定义,数组内某个元素是否被初始化,它的效率比array_key_exists()高4倍左右
$a='test'; $b=array('key1'=>'value1'); $class=newstdClass(); var_dump(isset($class->test->test));//判断对象属性是否定义:输出bool(false) var_dump(isset($a));//判断变量是否定义:输出bool(true) var_dump(isset($c));//判断变量是否定义:输出bool(false) var_dump(isset($b['key1']));//判断数组元素是否定义:输出bool(true) var_dump(isset($b['key2']));//判断数组元素是否定义:输出bool(false)
是否为空判断:empty()
empty()函数,检测变量是否为空
任何一个未初始化的量,0,false,空字符串,null,空数组,使用empty判断都会返回true
var_dump(empty($c));//输出bool(true) var_dump(empty($b['key2']));//输出bool(true) var_dump(empty($class));//输出bool(false) var_dump($class);//输出object(stdClass)#1(0){} var_dump(empty($class->test->test));//输出bool(true) classEmptyClass{}; $empty_class=newEmptyClass(); var_dump(empty($empty_class));//输出bool(false)
null==$var判断
除了判断未定义的变量会报错外,和empty判断一样,0,false,空数组等都会返回true,实质是==表达式会对两边的变量做自动类型转换,所以判断结果为true。
is_null判断
单变量赋值为null或者NULL时,判断结果true,其他情况为false,如果变量未定义,则会报错
null===$var判断
表达式:===为强制类型检测,不仅会检测表达式两边变量的值,还会检测变量的类型,都相等才会返回true。
0===$var:检测是否为0
false===$var:检测是否为false
null===$var:检测是否为null
''===$var:检测是否为空字符串,包含任意字符都返回false,如空格字符,\0
使用===能够很好的区分空字符串,0,false和null,甚至连整形和浮点型都能区分。
$zero_int=0; $zero_bool=false; $zero_double=0.0; $zero_null=null; $zero_str=''; var_dump(0===$zero_int);//输出bool(true) var_dump(0===$zero_bool);//输出bool(false) var_dump(0===$zero_double);//输出bool(false) var_dump(0===$zero_null);//输出bool(false) var_dump(0===$zero_str);//输出bool(false) var_dump(''===$zero_str);//输出bool(true) var_dump(''===$zero_int);//输出bool(false) var_dump(''===$zero_bool);//输出bool(false) var_dump(0.0===$zero_double);//输出bool(true) var_dump(0.0===$zero_int);//输出bool(false)
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。