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

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

 

测试的类型如下:

 <?php
$a;
$b = false;
$c = '';
$d = 0;
$e = null;
$f = array();
?> 

 
empty()
 

 代码如下 复制代码

<?php
var_dump(empty($a));
var_dump(empty($b));
var_dump(empty($c));
var_dump(empty($d));
var_dump(empty($e));
var_dump(empty($f));
?>

// 输出
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true) 

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

  isset()
 

 代码如下 复制代码

<?php
var_dump(isset($a));
var_dump(isset($b));
var_dump(isset($c));
var_dump(isset($d));
var_dump(isset($e));
var_dump(isset($f));
?>

// 输出
bool(false)
bool(true)
bool(true)
bool(true)
bool(false)
bool(true) 

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

 
警告: isset() 只能用于变量,因为传递任何其它参数都将造成解析错误。若想检测常量是否已设置,可使用 defined()函数。
当要 判断一个变量是否已经声明的时候 可以使用 isset 函数
当要 判断一个变量是否已经赋予数据且不为空 可以用 empty 函数
当要 判断 一个变量 存在且不为空 先isset 函数 再用 empty 函数

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

 代码如下 复制代码

$id=0;
    empty($id)?print "It's empty .":print "It's $id .";
      //结果:It's empty .
    print "<br>";
    !isset($id)?print "It's empty .":print "It's $id .";
      //结果: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

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

 代码如下 复制代码

 if(empty($id)) $id=1;
    print $id; // 得到 1

    if(!isset($id)) $id=1;
print $id; //得到 0

 

is_null()
 

 代码如下 复制代码

<?php
var_dump(is_null($a));
var_dump(is_null($b));
var_dump(is_null($c));
var_dump(is_null($d));
var_dump(is_null($e));
var_dump(is_null($f));
?>

// 输出
bool(true)
bool(false)
bool(false)
bool(false)
bool(true)
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

时间: 2024-09-15 20:55:15

php empty(), isset(), is_null()函数用法实例的相关文章

empty,isset,is_null比较(1/4)

empty,isset,is_null  这几个函数时候,遇到一些问题.甚至给自己的程序带来一些安全隐患的bug.很多时候,对于isset,empty都认为差不多.因此开发时候,就没有注意,一段作为流程判断时候,就出现bug问题了.  一.举例说明 a.一个变量没有定义,我们该怎么样去判断呢?   view source print? 01 <?php 02 #不存在$test 变量 03    04 $isset= isset($test)?"test is define!":

php内嵌函数用法实例

 这篇文章主要介绍了php内嵌函数用法,实例分析了php内嵌函数的调用方法与使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php内嵌函数用法.分享给大家供大家参考.具体分析如下: php中可以在函数内部内嵌一个函数,调用范围仅限于函数本身 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 <?php function msg() { echo("<center><

php定义参数数量可变的函数用法实例

 这篇文章主要介绍了php定义参数数量可变的函数用法,实例分析了func_get_args的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php定义参数数量可变的函数用法.分享给大家供大家参考.具体分析如下: php中的的函数参数可以不固定,甚至不用定义参数,在函数内部使用func_get_args()函数获得参数列表,调用时可以为函数指定任意参数,非常方便 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 <?php function addanyt

js常用系统函数用法实例分析

 这篇文章主要介绍了js常用系统函数用法,实例分析了escape.parseInt.parseFloat.isNaN.isFinite等函数的用法,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了js常用系统函数用法.分享给大家供大家参考. 具体代码如下: 代码如下: <html> <head> </head> <body> <script type="text/javascript"> //1. escap

JavaScript中匿名函数用法实例

 这篇文章主要介绍了JavaScript中匿名函数用法,实例分析了javascript中匿名函数的功能.定义及具体用法,需要的朋友可以参考下     本文实例讲述了JavaScript中匿名函数用法.分享给大家供大家参考.具体分析如下: JS中可以不用给函数名称,而是在使用时直接通过function把函数体赋值给相关的事件或者变量. 下面的JS代码给按钮设定了一个onclick事件,使用了匿名函数 ? 1 2 3 4 5 6 7 8 9 <form action="#">

Symfony2函数用法实例分析_php实例

本文实例讲述了Symfony2函数用法.分享给大家供大家参考,具体如下: 1.调用其他对象的方法. 例: $grobal_func=$this->container->get('global_func'); //'global_func'函数所在的文件名 $lot_data=$global_func->getDataFromFile($parm1); //getDataFromFile函数名 2.数据库的预备查询 $conn = $this->em->getConnectio

php计算给定时间之前的函数用法实例_php技巧

本文实例讲述了php计算给定时间之前的函数用法.分享给大家供大家参考.具体如下: 这里给定一个时间,计算这个时间在多久前,比如:2天前,1年前 <?php function prettyDate($date){ $time = strtotime($date); $now = time(); $ago = $now - $time; if($ago < 60){ $when = round($ago); $s = ($when == 1)?"second":"se

深入PHP empty(),isset(),is_null()的实例测试详解_php技巧

有关 PHP 的 empty(),isset() 还有 is_null() 这三个函数的用法讨论得已经很多了,而且很多资料也未必能说得很清楚.这里再重复一次,但不是从概念去说,直接用程序例子来说话,应该记忆会比较深刻些. 测试的类型如下: <?php $a; $b = false; $c = ''; $d = 0; $e = null; $f = array(); ?> empty() 首先是empty的var_dump输出: <?php var_dump(empty($a)); var

php empty,isset,is_null判断比较(差异与异同)_php技巧

一.举例说明 A.一个变量没有定义,我们该怎么样去判断呢 复制代码 代码如下: <?php #不存在$test 变量 $isset= isset($test)?"test is define!":"test is undefine!"; echo "isset:$isset\r\n"; $empty=!empty($test)?"test is define!":"test is undefine!"