当前位置:首页 > PHP教程 > php函数 > 列表

php empty(), isset(), is_null()函数用法实例

发布:smiling 来源: PHP粉丝网  添加日期:2014-09-13 14:22:15 浏览: 评论:0 

在php中empty(),isset(),is_null()三个函数在很多朋友看来都差不多,但我们简单想一下好像又不同,一个空值,一个是否是一个变量,是否为null,下面我来举例来说明.

很多人对于 PHP 的 empty(),isset() 及 is_null() 三个函数的用法比较模糊,网上的资料也很多,但未必能讲的清楚,下面给出一个测试实例,对于理解这三个函数的区别会有很大的好处.

测试的类型如下:

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

empty(),代码如下:

  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. bool(true) 
  11. bool(true) 
  12. bool(true) 
  13. bool(true) 
  14. bool(true) 
  15. bool(true) 

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

isset(),代码如下:

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

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

警告:isset() 只能用于变量,因为传递任何其它参数都将造成解析错误,若想检测常量是否已设置,可使用 defined()函数.

当要 判断一个变量是否已经声明的时候 可以使用 isset 函数

当要 判断一个变量是否已经赋予数据且不为空 可以用 empty 函数

当要 判断 一个变量 存在且不为空 先isset 函数 再用 empty 函数

比如检测 $id 变量,当 $id=0 时,用empty() 和 isset() 来检测变量 $id 是否已经配置,两都将返回不同的值—— empty() 认为没有配置,isset() 能够取得 $id 的值,代码如下:

  1. $id=0; 
  2.     emptyempty($id)?print "It's empty .":print "It's $id .";  
  3.       //结果:It's empty . 
  4.     print "<br>"
  5.     !isset($id)?print "It's empty .":print "It's $id ."
  6.       //结果:It's 0 . 

这意味着,我们在使用变量处理函数时,当该变量可能出现0的值,使用 empty() 要小心,这个时候用 isset 取代它更明智一些.

当一个php页面的 URL 尾部参数出现 id=0 时(比如:test.php?id=0),试比较,代码如下 :

if(empty($id)) $id=1; - 若 id=0,id 也会为1

if(!isset($id)) $id=1; - 若 id=0,id 不会为1

可分开运行以下代码检测上述推断,代码如下:

  1. if(emptyempty($id)) $id=1; 
  2.    print $id// 得到 1 
  3.  
  4.    if(!isset($id)) $id=1; 
  5. rint $id//得到 0 

is_null(),代码如下:

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

is_null 字面意思了.

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

后来给大家附一张表,下面一张表可以很清楚的说明他们之间的关系:

变量                    empty          is_null          isset

$a=””                 true               false        true

$a=null                 true               true         false

var $a                  true              true           false

$a=array()              true               false          true

$a=false                true               false           true

$a=15                   false              false           true

$a=1                    false              false            true

$a=0                    true               false            true

$a=”0”                true               false            true

$a=”true”             false               false            true

$a=”false”            false               false            true

Tags: empty isset is_null 函数用法

分享到: