在实际开发过程中,我们经常会进行变量为空判断,比如我们接收ajax传递过来的参数,在处理之前要进行判断,以免访问空的地址造成错误。
经常使用的方法有,empty($var), is_null($var),isset($var)
如何区分这三个方法,
1、empty()
的定义为:若变量已存在、非空字符串或者非零,则返回 false 值;反之返回 true。言外之意就是int 0,string '0'(用c语言的数据类型对比)
,都会被判做空,也就是返回true,这是从java或者c转php后会遇到的一个坑。
2、is_null()
,检测变量是否为NULL
。我们知道php中数据分为这样几种类型:字符串、整型、浮点型、布尔型、数组、对象,NULL,即string、int、float、bool、array,object,NULL
。其中NULL
表示数据无值,null
是NULL
数据类型唯一可能的值,当声明一个变量的时候,如果不赋值,则表示为null
,如$var;
与 $var = null;
是一样的,在这种情况下 is_null($var) = true
。
3、isset()
,用于检测变量是否存在(赋值?声明?),一般情况下用法跟is_null()
相反,有点互斥的意思,虽然他俩区别还挺大,简单来说isset()
是语句(可用理解为if...else
或者foreach
之流),而is_null()
是函数(就是你认识的函数)。语句在编译器编译过程中,就会直接生成结果,而函数只有运行后才会知道结果。
下面把这三个方法的一些常用并且易混的情况列举如下:
变量 empty() is_null() isset()
$a="" true false true
$a=null true true false
var $a true true false
$a=array() true false true
$a=false true false true
$a=15 false false true
$a=1 false false true
$a=0 true false true
$a="0" true false true
$a=true false false true
$a=false true false true
对齐太费劲了!