最新公告
  • 欢迎您光临波比源码,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • PHP empty() isset() is_null() 区别与性能比较

    在php中empty() isset() is_null()三个函数都是判断是否为空的情况,但是如果我个要具体的深入去了解这个三个函数发现还是有许多的区别.

    is_null(), empty(), isset(),这几个函数以及 == ”,== array() 会在实际操作中经常用到,因为功能很类似,可能会忽视了他们的区别,一不小心就会给工作带来很大的麻烦,下面将这几种结构列出来,供自己和大家参考,鉴于表述的准确性,部分解释来自英文原版手册,避免中文手册的更新不及时以及翻译不当等问题。

    is_null()

    is_null(),bool,当参数满足 null 的三种情况时,is_null() 将返回 TRUE。

    null类型,以下情况将被认定为 NULL:

    it has been assigned the constant NULL.

    it has not been set to any value yet.

    it has been unset().

    source:http://cn2.php.net/manual/en/language.types.null.php

    isset()

    isset(),bool,用于判定参数是否被设定并且不是 NULL。参数只能是变量。

    如果没有设置变量,或者变量被 unset() 掉,或者变量值为 NULL ,返回 FALSE,其它情况返回 TRUE。即如果不是 NULL 就属于 isset 的范畴了,这一点和 is_null() 函数正好相反。

    如果传递多个参数,将取交集。即所有参数全部符合 isset() 时才返回 TRUE。

    ps:defined(),bool,用于检查常量是否被设置。

    source:http://cn2.php.net/manual/en/function.isset.php

    empty()

    empty(),bool,主要用于判断变量是否为空,参数只能是变量。

    如下情况将被判定位空,代码如下:

    “” (an empty string)

    0 (0 as an integer)

    0.0 (0 as a float)

    “0″ (0 as a string)

    NULL

    FALSE

    array() (an empty array)

    var $var; (a variable declared, but without a value in a class)

    注:如果参数是未设置的变量,变量将被认定为 NULL,不会报错,返回 TRUE。

    但是注意在 5.0.0 之后,Objects with no properties are no longer considered empty.

    source:http://cn2.php.net/manual/en/function.empty.php

    判定是否为空的方式还有 ==”,== array() 等,比较有局限性,都没什么好说的,测试的类型如下:

    1. <?php 
    2. $a
    3. $b = false; 
    4. $c = ''
    5. $d = 0; 
    6. $e = null; 
    7. $f = array(); 
    8. ?> 

    empty()

    首先是empty的var_dump输出:

    1. <?php 
    2. var_dump(emptyempty($a)); 
    3. var_dump(emptyempty($b)); 
    4. var_dump(emptyempty($c)); 
    5. var_dump(emptyempty($d)); 
    6. var_dump(emptyempty($e)); 
    7. var_dump(emptyempty($f)); 
    8. ?> 
    9. /* 
    10. 程序输出为: 
    11. bool(true) 
    12. bool(true) 
    13. bool(true) 
    14. bool(true) 
    15. bool(true) 
    16. bool(true) 
    17. */ 

    从代码中可以看出,只要数据类型是否为空或假,empty()就输出true。

    isset()

    再看看isset的输出:

    1. var_dump(isset($a)); 
    2. var_dump(isset($b)); 
    3. var_dump(isset($c)); 
    4. var_dump(isset($d)); 
    5. var_dump(isset($e)); 
    6. var_dump(isset($f)); 
    7. /* 输出 
    8. bool(false) 
    9. bool(true) 
    10. bool(true) 
    11. bool(true) 
    12. bool(false) 
    13. bool(true) 
    14. */ 

    可以看出isset()只能用来判断是否为NULL和未定义。

    is_null()

    最后是is_null的输出:

    1. var_dump(is_null($a)); 
    2. var_dump(is_null($b)); 
    3. var_dump(is_null($c)); 
    4. var_dump(is_null($d)); 
    5. var_dump(is_null($e)); 
    6. var_dump(is_null($f)); 
    7. /*输出 
    8. bool(true) 
    9. bool(false) 
    10. bool(false) 
    11. bool(false) 
    12. bool(true) 
    13. bool(false) 
    14. */ 

    is_null 字面意思了。

    由此可见 empty() 可以用来判定所有的数据类型是否为空或假,而 is_null 与 isset 基本一样,只能用来判断是否为NULL和未定义。

    概括总结isset,empty,is_null区别:

    刚才介绍的:检查变量,以及参数类型,这个是这3个函数不同之处的基础,也是最容易被忽视的,看到网上有很多对这个3个函数进行比较文章,很少涉及这些,下面我要说的,是在都检查已存在变量情况下,不同之处,代码如下:

    1. <?php 
    2. $a=100; 
    3. $b=""
    4. $c=null; 
    5. //isset检查 
    6. echo "isset","$a=$a",isset($a)?"define":"undefine","rn"
    7. echo "isset","$b=$b",isset($b)?"define":"undefine","rn"
    8. echo "isset","$c=$c",isset($c)?"define":"undefine","rn"
    9. unset($b); 
    10. echo "isset","$b",isset($b)?"define":"undefine","rn"
    11. $b=0; 
    12. echo "rnrn"
    13. //empty检查 
    14. echo "empty","$a=$a",!emptyempty($a)?"no empty":"empty","rn"
    15. echo "empty","$b=$b",!emptyempty($b)?"no empty":"empty","rn"
    16. echo "empty","$c=$c",!emptyempty($c)?"no empty":"empty","rn"
    17. unset($b); 
    18. echo "empty","$b",!emptyempty($b)?"no empty":"empty","rn"
    19. $b=0; 
    20. echo "rnrn"
    21. //is_null检查 
    22. echo "is_null","$a=$a",!is_null($a)?"no null":"null","rn"
    23. echo "is_null","$b=$b",!is_null($b)?"no null":"null","rn"
    24. echo "is_null","$c=$c",!is_null($c)?"no null":"null","rn"
    25. unset($b); 
    26. echo "is_null","$b",is_null($b)?"no null":"null","rn"
    波比源码 – 精品源码模版分享 | www.bobi11.com
    1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
    2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
    3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
    4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
    5. 如有链接无法下载、失效或广告,请联系管理员处理!
    6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
    7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

    波比源码 » PHP empty() isset() is_null() 区别与性能比较

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    波比源码
    一个高级程序员模板开发平台
    升级波友尊享更多特权立即升级