PHP学习之empty,is_null,isset的区别

在实际开发过程中,我们经常会进行变量为空判断,比如我们接收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表示数据无值,nullNULL数据类型唯一可能的值,当声明一个变量的时候,如果不赋值,则表示为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

对齐太费劲了!

你可能感兴趣的:(PHP学习之empty,is_null,isset的区别)