php专区

 首页 > php专区 > PHP应用 > php函数大全 > PHP empty() isset() is_null() 区别与性能比较 - php函数

PHP empty() isset() is_null() 区别与性能比较 - php函数

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

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. $a
  2. $b = false; 
  3. $c = ''
  4. $d = 0; 
  5. $e = null; 
  6. $f = array(); 
  7. ?> 

empty()

首先是empty的var_dump输出:

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

从代码中可以看出,只要数据类型是否为空或假,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. $a=100; 
  2. $b=""
  3. $c=null; 
  4. //isset检查 
  5. echo "isset","$a=$a",isset($a)?"define":"undefine","rn"
  6. echo "isset","$b=$b",isset($b)?"define":"undefine","rn"
  7. echo "isset","$c=$c",isset($c)?"define":"undefine","rn"
  8. unset($b); 
  9. echo "isset","$b",isset($b)?"define":"undefine","rn"
  10. $b=0; 
  11. echo "rnrn"
  12. //empty检查 
  13. echo "empty","$a=$a",!emptyempty($a)?"no empty":"empty","rn"
  14. echo "empty","$b=$b",!emptyempty($b)?"no empty":"empty","rn"
  15. echo "empty","$c=$c",!emptyempty($c)?"no empty":"empty","rn"
  16. unset($b); 
  17. echo "empty","$b",!emptyempty($b)?"no empty":"empty","rn"
  18. $b=0; 
  19. echo "rnrn"
  20. //is_null检查 
  21. echo "is_null","$a=$a",!is_null($a)?"no null":"null","rn"
  22. echo "is_null","$b=$b",!is_null($b)?"no null":"null","rn"
  23. echo "is_null","$c=$c",!is_null($c)?"no null":"null","rn"
  24. unset($b); 
  25. echo "is_null","$b",is_null($b)?"no null":"null","rn"
分享到:
php获取url参数程序代码总结 - php函数
php获取url参数程序代码总结 在php中获取url中参数的方法有很多种,其中最简单的就直接使用parse_url函数了,他可以很方便快速的自动解析url参数与值并保存期到对应的数组中,其它的一种方法基本都是正则表达式来操作了。 parse_url函数 我们先来了解一下parse_url函数,官方解决 说明:mixed ...
php中拆分和组合字符串函数介绍 - php函...
php中拆分和组合字符串函数介绍 在php中拆分字符串我们会用到explode或者split函数,如果我们要组合字符串就可以使用implode或使用.号直接连接了 字符组合,代码如下: for($k=2;$k  //输出:Hello World! Beautiful Day!  explode() 函数把字符串分割为数组。 注释:参数 li...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……