PHP中:is_null,empty以及isset,unset的区别

Server 林涛 6253℃ 0评论

is_null, empty, isset, unset 我们先来看看这4个函数的描述。

isset 判断变量是否已存在(配置)
unset 把变量删除(释放)掉
empty 判断变量是否为空
is_null 判断变量是否为NULL
ok,已经开始搞人了。那么开始,这4个函数中除了unset,其他3个都是判断函数,unset首先出局,因为他不会搞错,其次是is_null,我们可以把它看成是!isset,是isset的一个逆操作,下面一张表可以很清楚的说明他们之间的关系:

变量

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”

FALSE

FALSE

TRUE

从中我们可以发现只要变量是否为” “或者0,或者是false和null,只要是这些值empty都会返回true,而isset是判断变量是否存在,只要你这个变量不是null或未赋值,返回结果都是true,而is_null正好是isset的反结果。

当然如果只是想做如下工作:
echo !isset($_GET[‘a’]);  //如果得不到变量a的值
echo empty($_GET[‘a’]);  //如果变量a的值是空

那么结果都是一样的,都可以用。

外一则:
//========= 判断 0 和 ” 以及 empty null false的关系 start =========//
if(‘safdasefasefasf’==0){
echo “该字符串转换为数字 等于 0
“;
}//output:该字符串转换为数字 等于零。
这是关键的一个例子
手册上有解释:该值由字符串最前面的部分决定。如果字符串以合法的数字数据开始,就用该数字作为其值,否则其值为 0(零)。

也就是说 ‘3asfdf’==3 ; ‘adsfasdf’==0 相当要注意
$a=0;
if($a==”){
echo “0 等于 ”
“;
} //output:0 等于”
if(trim($a)==”){
echo “trim(0)等于”
“;
} //no output

if($a===”){
echo “0===”
“;
} //no output
if(empty($a)){
echo “” is empty
“;
} //output:” is empty
if(is_null($a)){
echo “0 is null
“;
} //no output
if(is_numeric($a)){
echo “0 is numeric
“;
} //output:0 is numeric
if(is_string($a)){
echo “0 is string
“;
} //no output
if(strval($a)==”){
echo “转换成字符串的0 is ”
“;
} //no output
//========= 判断 0 和 ” 以及 empty null false的关系 end =========//
//========= 判断 ” 和 0 以及 empty null false的关系 start =========//
$b = ”;
if($b==0){
echo “” 等于 0
“;
} //output:” 等于 0
if(!”){
echo “” 就是false
“;
} //output:” 就是false
if(!0){
echo “0 就是false
“;
} //output:0 就是false
//========= 判断 ” 和 0 以及 empty null false的关系 end =========//
echo “在判断空(”)的时候一定要小心,0 也相当于” ,0 和 ” 都相当于空字符和false,判断为空最好用===”;
?>

输出的结果是:

0 等于 ”
” is empty
0 is numeric
” 等于 0
” 就是false
0 就是false
在判断空(”)的时候一定要小心,0 也相当于” ,0 和 ” 都相当于空字符和false,判断为空最好用===

只能这样解释:0 也相当于 ” ,0 和 ” 都相当于空字符和false

在判断空(”)的时候一定要小心,0 也相当于 ” ,0 和 ” 都相当于空字符和false,判断为空最好用===;

如需转载请注明: 转载自26点的博客

本文链接地址: PHP中:is_null,empty以及isset,unset的区别

转载请注明:26点的博客 » PHP中:is_null,empty以及isset,unset的区别

喜欢 (0)
发表我的评论
取消评论

表情
(2)个小伙伴在吐槽
  1. 哈,真全面呀!这下可算明白了,谢谢!
    missying2010-10-21 12:08 回复