面试题 / 5 / 5 / 创建于 3年前
如题
isset只能检测变量不能直接检测null;结果:011
首先一个变量在内存中存贮了一个名称,还保存了一个值,这个值可能是具体的值,也可能是引用值(对象的地址值)。isset 字面意思是 is set?,检查一个变量名是否存在,并且值是否被设置了。好比找一个叫张三的人,那先找有没有 张三的名称,其次还要看有没有实体。占用了名称,但没有值的为 null( 空值)。
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
empty
false
"" //字符串类型 空的 0//整形,空的 0.0//浮点型,空的 "0" //数字字符串类型,空的 null // 没有值 false //布尔型 array() // 数组,空的 $var; //一个声明了,但是没有值的变量 实际还是 null
is_null 是类型检测,不是 null 的返回false
is_null
$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。
false true true
isset() 和其他两者的区别是判断变量是否被声明,并且可以传多个参数(多个做&运算)。is_null()函数是对于空字符串来说,is_null是唯一返回false的.empty()和isset()的逆运算本质上是一样的。三个函数对于传递null值,返回的分别是false,true,true
我要举报该,理由是:
isset只能检测变量不能直接检测null;结果:011
首先一个变量在内存中存贮了一个名称,还保存了一个值,这个值可能是具体的值,也可能是引用值(对象的地址值)。
isset
字面意思是is set?
,检查一个变量名是否存在,并且值是否被设置了。好比找一个叫张三
的人,那先找有没有张三
的名称,其次还要看有没有实体。占用了名称,但没有值的为null
( 空值)。因此 isset 的定义是 “检测变量是否已设置并且非 null” ,通常判断变量是否存在比较合适。如果这个变量存在,用
empty
判断多个数据结构类型是否为 “空的”,官方文档中 “empty() 本质上与 !isset($var) || $var == false 等价” ,即将下列值转为布尔值后都为false
is_null
是类型检测,不是 null 的返回false传递一个 null,该三个函数分别返回什么?
区别: 1.isset和empty为语言结构,is_null为函数。 2.isset — 检测变量是否已设置并且非 null;empty — 检查一个变量是否为空;is_null — 检测变量是否为 null。
false true true
isset() 和其他两者的区别是判断变量是否被声明,并且可以传多个参数(多个做&运算)。
is_null()函数是对于空字符串来说,is_null是唯一返回false的.
empty()和isset()的逆运算本质上是一样的。
三个函数对于传递null值,返回的分别是false,true,true