讨论数量:
首先一个变量在内存中存贮了一个名称,还保存了一个值,这个值可能是具体的值,也可能是引用值(对象的地址值)。isset
字面意思是 is set?
,检查一个变量名是否存在,并且值是否被设置了。好比找一个叫张三
的人,那先找有没有 张三
的名称,其次还要看有没有实体。占用了名称,但没有值的为 null
( 空值)。
isset($abcdef);// 不存在返回false
$sundasheng;
isset($sundasheng);// false 孙大圣存在,但只是神话人物
$a = '123';
$a = null;
isset($a);//false
因此 isset 的定义是 “检测变量是否已设置并且非 null” ,通常判断变量是否存在比较合适。如果这个变量存在,用 empty
判断多个数据结构类型是否为 “空的”,官方文档中 “empty() 本质上与 !isset($var) || $var == false 等价” ,即将下列值转为布尔值后都为 false
"" //字符串类型 空的
0//整形,空的
0.0//浮点型,空的
"0" //数字字符串类型,空的
null // 没有值
false //布尔型
array() // 数组,空的
$var; //一个声明了,但是没有值的变量 实际还是 null
is_null
是类型检测,不是 null 的返回false
$a;is_null($a);//true
is_null(null);//true
$a=null;is_null($a);//true
传递一个 null,该三个函数分别返回什么?
$a = null;
isset($a);//false
empty($a);//true
is_null($a);//true
区别: 1.isset和empty为语言结构,is_null为函数。 2.isset — 检测变量是否已设置并且非 null;empty — 检查一个变量是否为空;is_null — 检测变量是否为 null。
推荐文章: