这些变量判断函数在PHP开发中其实用的很多,乍一看都差不多,但还是有很多不同的地方。如果不清楚,可能会留下一些潜在的bug,包括我自己也遇到过这样的坑。比如我有一次遇到空判断的问题。前端允许输入0,但是我用如果空判断为真,我会直接报错,所以这里不能用这个判断。""(空字符串)0(0作为整数)0.0(0作为浮点数)"0"(0作为字符串)NULLFALSEarray()(空数组)$var;(有声明,但没有值变量)is_null—检测变量是否为NULL——isset先判断变量是否定义,数组的键值是否存在等`$val){``echo$key.``'=>'``.var_dump(isset($val)).``"\r\n"``;``}``//以上输出只有null才返回false,其他都为true``$arr=[``'name'``=>``'lc'``,``'age'``=>22,``'address'``=>``null``];``echoisset($arr[``'name'``]).``"\r\n"``;``//true``echoisset($arr[``'mobile'``]).``"\r\n"``;``//false``echoisset($arr[``'address'``]).``"\r\n"``;``//false``//未定义的key和value为null,返回false`empty`$data``=[``""``,``""``,0,0.0,``"0"``,null,``"null"``,true,false,[]];``foreach``(``$data``as``$key``=>``$val``){``echo``$key``.``'=>'``.var_dump(``empty``(``$val``)).``"\r\n"``;``}``//上面的输出'""',"null",true等都是false,其他为true``is_null``$data``=[``""``,``""``,0,0.0,``"0"``,null,``"null"``,true,false,[]];``foreach``(``$data``as``$key``=>``$val``){``echo``$key``.``'=>'``.var_dump(``is_null``(``$val``)).``"\r\n"``;``}``//以上输出为nulltr??ue,其他都是false`另外PHP7有个快速判断方法是??和?:语法,这个要多注意`$a``??0;``//等价于isset($a);``$a``?:0;``//相当于!empty($a);`通过上面的例子,我们应该明白这几个的区别了,我们只需要多注意开发的时候可以选择合适的判断函数结论isset:non-nullistrue.empty:"",0,0.0,"0",null,false,array(),undefinedvaristrue.is\_null:Avalue为空为真
