设为首页 收藏本站
查看: 398|回复: 0

[经验分享] php中empty()、isset()、is_null()和变量本身的布尔判断区别

[复制链接]

尚未签到

发表于 2015-8-30 10:38:44 | 显示全部楼层 |阅读模式
  在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"NULLFALSEarray()这几个中,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()可以正常判断出为"空"的.
  



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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-106237-1-1.html 上篇帖子: 40个迹象表明你还是PHP菜鸟 下篇帖子: 无聊写的一个PHP Socket类
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表