zoukankan      html  css  js  c++  java
  • 困扰我的isset/empty函数

    在学习php有一段时间之后,感觉自己的基础知识还是有点不牢固,有的问题就不怎么知道,比如就有一个,在判断一个变量是否为空的情况下,我就不知道是用isset()还是empty()。今天我就来分析该用哪个函数。
    isset():用于判断一个函数是否被设置过,如果设置过就为true,否则就为false,但是有一个例外,就是如果一个变量被设置成null的话,此时也会返回的也是false。

    <?php
        $a = null;
        var_dump(isset($a));//a变量已赋值,但是被设置成null,故返回false
        var_dump(isset($b));//内存中不存在变量b,故返回false
        var_dump(isset($_GET['id']));//如果$_GET['id']变量不存在,则返回false;如果$_GET['id']存在,则返回true
    ?>

    empty():用于判断一个变量是否为空,如果是整形的0,浮点型的0.0,字符型的’ ‘和’0’,还有布尔型的false,NULL型的null,空数组等

    <?php
        $a = null;
        var_dump(empty($a));//true
        $b = "";
        var_dump(empty($b));//true
        $c = "0";
        var_dump(empty($b));//true
        $c = 0;
        var_dump(empty($b));//true
        $e = false;
        var_dump(empty($e));//true
        $f = array();
        var_dump(empty($f));//true
        var_dump(empty($g));//$g变量不存在,返回true
        var_dump(empty($_GET['id']));//如果$_GET['id']不存在,则返回true;如果存在,但是值是上述条件,则还是返回true。
    ?>

    总结:如果是判断一个变量是否存在,可以用isset()和empty();如果判断变量的值是否为空,那么就用empty()。

    注意:以前我在做项目的时候,出现了这样的一个问题,我把select下拉列表框的选中的值传到服务器,服务器从超全局数组中获取到了值,但是当时我不清楚isset()和empty()的区别,当时只知道他们都能判断变量是否存在,结果我用了empty()函数,最后,就出现bug了,我用empty()进行判断,把我传过来的变量的值为0的情况就给排除了。
    所有在这里提醒大家,如果只是判断变量是否为空,最好还是用isset()。

  • 相关阅读:
    求教——使用node做表单,刷新浏览器页面,浏览器为什么会重复提交上次所填的信息
    sublime 插件
    h5专题应该兼容那些浏览器?
    省市区县镇级联数据JS版
    使用 iscroll 实现焦点图无限循环
    DAO与DTO的区别
    Struts2的DMI的开启方法
    在JSP中的java代码中调用js代码
    Eclipse发布web项目时报错:Multiple Contexts have a path of "/xxx".
    记录:将MyEclipse的Dynamic Web Project项目部署到Eclipse的过程
  • 原文地址:https://www.cnblogs.com/cnsec/p/13407092.html
Copyright © 2011-2022 走看看