php empty()与isset()区别的详细介绍

在使用 php 编写页面程序时,我经常使用变量处理函数判断 php 页面尾部参数的某个变量值是否为空,开始的时候我习惯了使用 empty() 函数,却发现了一些问题,因此改用 isset() 函数,问题不再。

顾名思义,empty() 判断一个变量是否为“空”,isset() 判断一个变量是否已经设置。正是这种所谓的“顾名思义”,令我开始时走了些弯路:当一个变量值等于0时,empty()也会成立(True),因而会发生 一些意外。原来,empty() 和 isset() 虽然都是变量处理函数,它们都用来判断变量是否已经配置,它们却是有一定的区别empty还会检测变量是否为空、为零。当一个变量值为0,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

(0)

相关推荐

  • PHP中empty和isset对于参数结构的判断及empty()和isset()的区别

    废话不多说了,直接给大家贴代码了. <?php class test{} $a1 = null; $a2 = ""; //$a3 = $a4 = 0; $a5 = '0'; $a6 = false; $a7 = array(); //var $a8; $a9 = new test(); for ($i=1; $i <=9 ; $i++) { $s = 'a'.$i; echo $i . ":"; var_dump(isset($$s)); echo '&

  • PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法

    ISSET();--适合于检测是否存在这个参数. 定义和作用范围:用于测试一个变量是否具有值(包括0,FALSE,或者一个空字串,但不能是NULL),即:"http://localhost/?fo="也是可以通过检测,因此不适用.但如果是"http://localhost/"参数中并不含fo参数,就可以用isset来检测,此时isset($_GET['fo'])返回false. 不适用于:该函数不适合于验证html表单中的文本的有效方式.要检查用户输入文本是否有效,

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

    有关 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 isset()与empty()的使用区别详解

    PHP的isset()函数 一般用来检测变量是否设置 格式:bool isset ( mixed var [, mixed var [, ...]] ) 功能:检测变量是否设置 返回值: 若变量不存在则返回 FALSE 若变量存在且其值为NULL,也返回 FALSE 若变量存在且值不为NULL,则返回 TURE 同时检查多个变量时,每个单项都符合上一条要求时才返回 TRUE,否则结果为 FALSE 版本:PHP 3, PHP 4, PHP 5 更多说明: 使用 unset() 释放变量之后,它将

  • php empty()与isset()区别的详细介绍

    在使用 php 编写页面程序时,我经常使用变量处理函数判断 php 页面尾部参数的某个变量值是否为空,开始的时候我习惯了使用 empty() 函数,却发现了一些问题,因此改用 isset() 函数,问题不再. 顾名思义,empty() 判断一个变量是否为"空",isset() 判断一个变量是否已经设置.正是这种所谓的"顾名思义",令我开始时走了些弯路:当一个变量值等于0时,empty()也会成立(True),因而会发生 一些意外.原来,empty() 和 isset

  • .h和.cpp文件的区别(zt)详细介绍

    因刚接触VC++的开发,需要对C++一些原理性的东西进行掌握.特别是对源文件和头文件的概念,需要深入对它了解: 关于头文件和源文件的分别 首先,我们可以将所有东西都放在一个.cpp文件内. 然后编译器就将这个.cpp编译成.obj,obj是什么东西? 就是编译单元了.一个程序,可以由一个编译单元组成,也可以有多个编译单元组成. 如果你不想让你的源代码变得很难阅读的话, 就请使用多个编译单元吧.(一个函数不能放到两个编译单元里面,但两个以上 就可以分别放在一个单元,也就是cpp里面) 那么就是一个

  • php中is_null,empty,isset,unset 的区别详细介绍

    is_null, empty, isset, unset 我们先来看看这4个函数的描述. isset 判断变量是否已存在(配置)unset 把变量删除(释放)掉empty 判断变量是否为空is_null 判断变量是否为NULLok,已经开始搞人了.那么开始,这4个函数中除了unset,其他3个都是判断函数,unset首先出局,因为他不会搞错,其次是is_null,我们可以把它看成是!isset,是isset的一个逆操作,下面一张表可以很清楚的说明他们之间的关系: 复制代码 代码如下: 变量   

  • VMware网络连接模式(桥接、NAT以及仅主机模式的详细介绍和区别)

    在使用VMware Workstation(以下简称:VMware)创建虚拟机的过程中,配置虚拟机的网络连接是非常重要的一环,当我们为虚拟机配置网络连接时,我们可以看到如下图所示的几种网络连接模式:桥接模式.NAT模式.仅主机模式.自定义网络连接模式.那么这几种网络连接模式都各自有什么主要用途,它们之间又有哪些区别呢? 磨刀不误砍柴工,为了更好地使用虚拟机,了解这几种连接模式的主要用途以及它们之间的区别是非常有必要的.在这里,我们就以下面的网络连接示意图为例来进行相关介绍. 在VMware中,虚

  • C语言 strcpy和memcpy区别详细介绍

    C语言 strcpy和memcpy区别详细介绍 PS:初学算法,开始刷leetcode,Rotate array的预备知识(写的代码Time Limit Exceed难过)于是百度高效算法,本篇作为预备知识. 1.strcpy和strncpy函数 这个不陌生,大一学C语言讲过,其一般形式为strcpy(字符数组1,字符串2)作用是将字符串2复制到字符数组1中去. EX: char str1[10]='',str2[]={"China"}; strcpy(str1,str2); strn

  • 详细介绍Java关键字throw throws Throwable的用法与区别

    目录 1. Throwable 1.1 扩展-Error 1.2 扩展-Exception 2. throws 2.1 扩展 3. throw 3.1 扩展 4. 总结 throw,意为“投掷.抛.扔”.Throw.Throws和Throwable三者都用于异常处理. 1. Throwable Throwable在Java中是异常处理这个分支的顶级父类,其它所有异常处理的实现都依赖于Throwable 打开Java官方文档(Java8版本),找到Throwable,它的直接子类为Error和Ex

  • 一张表搞清楚php is_null、empty、isset的区别

    isset 判断变量是否已存在 empty 判断变量是否为空或为0 is_null 判断变量是否为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

  • JAVA HashMap详细介绍和示例

    第1部分 HashMap介绍HashMap简介HashMap 是一个散列表,它存储的内容是键值对(key-value)映射.HashMap 继承于AbstractMap,实现了Map.Cloneable.java.io.Serializable接口.HashMap 的实现不是同步的,这意味着它不是线程安全的.它的key.value都可以为null.此外,HashMap中的映射不是有序的.HashMap 的实例有两个参数影响其性能:"初始容量" 和 "加载因子".容量

随机推荐