php中empty()、isset()、is_null()和变量本身的布尔判断区别

<?php
//预定义变量数组:空字符,字符0,数组0,null,布尔false,空数组
$arr_var = array('', '0', 0, null, false, array());

foreach ($arr_var as $value) {
    echo '<br>传入值为:' . $value . '<br>';
    if (!isset($value)) {
        echo 'isset()==false<br>';
    }
    if (empty($value)) {
        echo 'empty()==true<br>';
    }
    if (!$value) {
        echo 'self==false<br>';
    }
    if (is_null($value)) {
        echo 'is_null()==true<br>';
    }
}
?>
输出结果:

传入值为:
empty()==true
self==false

传入值为:0
empty()==true
self==false

传入值为:0
empty()==true
self==false

传入值为:
isset()==false
empty()==true
self==false
is_null()==true

传入值为:
empty()==true
self==false

传入值为:Array
empty()==true
self==false

复制代码

总结一:从结果中可以看出,""、0、"0"、NULL、FALSE、array()这几个中,empty()和“变量本身作为参数”结果一致,均作为“空”来处理,而isset()和is_null ()仅当是null时,才作为“空”来处理(值得注意的是false并不会被认为是空)

下面我们看下当一个变量未定义初始化时,这些函数返回的是什么
复制代码

echo '<br>传入值为:undefine<br>';
    if (!isset($value_undefine)) {
        echo 'isset()==false<br>';
    }
    if (empty($value_undefine)) {
        echo 'empty()==true<br>';
    }
    if (!$value_undefine) {
        echo 'self==false<br>';
    }
    if (is_null($value_undefine)) {
        echo 'is_null()==true<br>';
    }
输出结果:

传入值为:undefine
isset()==false
empty()==true

(此处警告变量未定义)
self==false

(此处警告变量未定义)
is_null()==true

复制代码

 总结二:由结果可看出,当变量未定义时,is_null()和“本身参数”是不允许作为参数判断的,虽然结果可以判断出来为“空”,建议不使用。

isset()和empty()可以正常判断出为"空"的.

 
1
2
3
4
5
6
7
8
9
	
最后总结:
 
isset(),仅当null和未定义,返回false
 
empty(),""、0、"0"、NULL、FALSE、array(),未定义,均返回false
 
本身作为参数,与empty()一致,但接受未定义变量时,报警告
 
is_null(),仅判断是否为null,未定义报警告 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值