isset — 检测变量是否已设置并且非 null

empty — 检讨一个变量是否为空,以下的东西都被认作空

"" (空字符串)

phpnullemptyPHP的issetisnullempty应用总结 Docker

0 (作为整数的0)

0.0 (作为浮点数的0)

"0" (作为字符串的0)

NULL

FALSE

array() (一个空数组)

$var; (一个声明了,但是没有值的变量)

is_null — 检测变量是否为 NULL

一 isset

判断变量有无先定义,数组的键值有无存在等

<?php

$data=[""," ", 0, 0.0 ,"0", null, "null", true, false ,[]];

foreach ($data as $key => $val){

echo $key . '=>' . var_dump(isset($val)) . "\r\n";

}

//以上输出只有 null返回false,其它都为真

$arr = ['name' =>'lc', 'age' => 22, 'address' =>null];

echo isset($arr['name']) . "\r\n"; //true

echo isset($arr['mobile'])."\r\n"; //false

echo isset($arr['address']) ."\r\n"; //false

//未定义的键和值为null,返回false

empty

$data=[""," ", 0, 0.0 ,"0", null, "null", true, false ,[]];

foreach ($data as $key => $val){

echo $key . '=>' . var_dump(empty($val)) . "\r\n";

}

//以上输出 '" "',"null",true等为false,其它为true

is_null

$data=[""," ", 0, 0.0 ,"0", null, "null", true, false ,[]];

foreach ($data as $key => $val){

echo $key . '=>' . var_dump(is_null($val)) . "\r\n";

}

//以上输出 null 为true,其它全为false

其余,PHP7有一个快捷判断的办法便是 ??和 ?:语法,这个也要多把稳下

$a ?? 0; //相称于isset($a);

$a ?: 0; //相称于!empty($a);

通过上面的示例,该当理解这几个的差异了,在开拓的时候我们只要多把稳下,就能选择得当的判判函数了。

结论

isset:非 null的都为true.

empty: "" , 0 ,0.0,"0",null,false,array(),未定义var都为true.

is_null:值为null为true.