PHP isset、empty 和 is_null 区别是什么?传递一个 null,该三个函数分别返回什么?

请尝试在评论区里写下答案(如不能清楚表述,那么你可能没真正理解)。欢迎参与,为下一次求职做准备。

如题

摈弃世俗浮躁,追求技术精湛
Summer
讨论数量: 5

isset只能检测变量不能直接检测null;结果:011

2年前 评论

首先一个变量在内存中存贮了一个名称,还保存了一个值,这个值可能是具体的值,也可能是引用值(对象的地址值)。
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
2年前 评论

区别: 1.isset和empty为语言结构,is_null为函数。 2.isset — 检测变量是否已设置并且非 null;empty — 检查一个变量是否为空;is_null — 检测变量是否为 null。

2年前 评论

isset() 和其他两者的区别是判断变量是否被声明,并且可以传多个参数(多个做&运算)。
is_null()函数是对于空字符串来说,is_null是唯一返回false的.
empty()和isset()的逆运算本质上是一样的。
三个函数对于传递null值,返回的分别是false,true,true

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!