PHP中empty()和isset()的区别

虽然记得,"empty()" 是检测变量是否为空,"isset()"是检测变量是否设置,但是有时候还是容易凌乱,看千遍不如自己写一遍。

手册中是这样定义的

"empty"  判断一个变量是否被认为是空的,当一个变量并不存在,或者它的值等同于FALSE,那么它会被认为不存在。如果变量不存在的话,"empty"并不会产生警告。

“isset" 检测变量是否设置,并且不是NULL。如果已经使用了 "unset" 释放了一个变量后,它将不再是 "isset()" 。若使用 "isset()" 测试一个被设置成NULL的变量,将返回FALSE。同时要注意的是一个NULL字节("\0")并不等同于PHP的NULL常数。

下面我们来代码里面看看

<?php

    $a = null;
    $b = 'null';
    $c = 0;
    $d = '0';
    $e = '';
    $f = ' ';
    $g;
    $i = FALSE;
    $j = 'false';

    echo '$a的类型是'.gettype($a).'<br />'; //$a的类型是NULL
    echo '$b的类型是'.gettype($b).'<br />'; //$b的类型是string
    echo '$c的类型是'.gettype($c).'<br />'; //$c的类型是integer
    echo '$d的类型是'.gettype($d).'<br />'; //$d的类型是string
    echo '$e的类型是'.gettype($e).'<br />'; //$e的类型是string
    echo '$f的类型是'.gettype($f).'<br />'; //$f的类型是string
    echo '$g的类型是'.gettype($g).'<br />'; //Notice: Undefined variable: g in E:\WWW\pdemo\demo6.php on line 17 $g的类型是NULL
    echo '$i的类型是'.gettype($i).'<br />'; //$i的类型是boolean
    echo '$j的类型是'.gettype($j).'<br />'; //$j的类型是string
    
    echo "<pre>";

    echo '$a isset()后的结果:';
    var_dump(isset($a)); //$a isset()后的结果:bool(false)

    echo '$b isset()后的结果:';
    var_dump(isset($b)); //$b isset()后的结果:bool(true)

    echo '$c isset()后的结果:';
    var_dump(isset($c)); //$c isset()后的结果:bool(true)

    echo '$d isset()后的结果:';
    var_dump(isset($d)); //$d isset()后的结果:bool(true)

    echo '$e isset()后的结果:';
    var_dump(isset($e)); //$e isset()后的结果:bool(true)

    echo '$f isset()后的结果:';
    var_dump(isset($f)); //$f isset()后的结果:bool(true)

    echo '$g isset()后的结果:';
    var_dump(isset($g)); //$g isset()后的结果:bool(false)

    echo '未定义变量isset()后的结果:';
    var_dump(isset($h)); //未定义变量isset()后的结果:bool(false)

    echo '$i isset()后的结果:';
    var_dump(isset($i)); //$g isset()后的结果:bool(false)

    echo '$j isset()后的结果:';
    var_dump(isset($j)); //$g isset()后的结果:bool(false)

    echo "<hr />";

    echo '$a empty()后的结果:';
    var_dump(empty($a)); //$a empty()后的结果:bool(true)

    echo '$b empty()后的结果:';
    var_dump(empty($b)); //$b empty()后的结果:bool(false)

    echo '$c empty()后的结果:';
    var_dump(empty($c)); //$c empty()后的结果:bool(true)

    echo '$d empty()后的结果:';
    var_dump(empty($d)); //$d empty()后的结果:bool(true)

    echo '$e empty()后的结果:';
    var_dump(empty($e)); //$e empty()后的结果:bool(true)

    echo '$f empty()后的结果:';
    var_dump(empty($f)); //$f empty()后的结果:bool(false)

    echo '$g empty()后的结果:';
    var_dump(empty($g)); //$g empty()后的结果:bool(true)

    echo '未定义变量empty()后的结果:';
    var_dump(empty($h)); //未定义变量empty()后的结果:bool(true)

    echo '$i empty()后的结果:';
    var_dump(empty($i)); //$g empty()后的结果:bool(true)

    echo '$j empty()后的结果:';
    var_dump(empty($j)); //$g empty()后的结果:bool(true)

运行结果如下图所示:


看的出来, "isset()"  把值为NULL的null类型的和没赋值的,没定义的变量,认为是空,返回FALSE;  ”empty()“ 把 值为null的null类型的,integer类型的0,字符串类型的0,字符串类型的 '' ,未定义的变量,布尔类型的false,认为是空,返回TRUE。不过有意思的是 ‘’判断为空返回TRUE,‘ ’却判断不为空,返回FALSE。

结果就是这样了,大家可以看看,或者运行下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值