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


Posted in PHP onJune 17, 2013

在使用 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

PHP 相关文章推荐
BBS(php &amp; mysql)完整版(二)
Oct 09 PHP
初学CAKEPHP 基础教程
Nov 02 PHP
PHP中使用mktime获取时间戳的一个黑色幽默分析
May 31 PHP
解决PHP mysql_query执行超时(Fatal error: Maximum execution time …)
Jul 03 PHP
php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
Jul 18 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
Mar 25 PHP
php基本函数汇总
Jul 09 PHP
PHP6连接SQLServer2005的三部曲
Apr 15 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
Jun 12 PHP
php实现文章置顶功能的方法
Oct 20 PHP
PHP实现的激活用户注册验证邮箱功能示例
Jun 06 PHP
PHP+ajax实现获取新闻数据简单示例
May 08 PHP
php include和require的区别深入解析
Jun 17 #PHP
浅析php header 跳转
Jun 17 #PHP
解析php中heredoc的使用方法
Jun 17 #PHP
深入PHP5中的魔术方法详解
Jun 17 #PHP
php.ini 配置文件的深入解析
Jun 17 #PHP
解析posix与perl标准的正则表达式区别
Jun 17 #PHP
Session服务器配置指南与使用经验的深入解析
Jun 17 #PHP
You might like
用 php 编写的日历
2006/10/09 PHP
php 多关键字 高亮显示实现代码
2012/04/23 PHP
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
php json转换成数组形式代码分享
2014/11/10 PHP
PHP实现获取FLV文件的时间
2015/02/10 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
PHP常用函数之格式化时间操作示例
2019/10/21 PHP
JavaScript 原型继承之构造函数继承
2011/08/26 Javascript
Javascript中克隆一个数组的实现代码
2013/12/06 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
2014/05/14 Javascript
原生JavaScript+LESS实现瀑布流
2014/12/12 Javascript
jQuery设置和移除文本框默认值的方法
2015/03/09 Javascript
JS实现的通用表单验证插件完整实例
2015/08/20 Javascript
使用jQuery mobile库检测url绝对地址和相对地址的方法
2015/12/04 Javascript
jQuery源码分析之init的详细介绍
2017/02/13 Javascript
ionic中的$ionicPlatform.ready事件中的通用设置
2017/06/11 Javascript
vue引入axios同源跨域问题
2018/09/27 Javascript
mpvue开发音频类小程序踩坑和建议详解
2019/03/12 Javascript
layui 弹出层值回传解决方式
2019/11/14 Javascript
[02:05]2014DOTA2西雅图邀请赛 老队长全明星大猜想谁不服就按进显示器
2014/07/08 DOTA
Python自动扫雷实现方法
2015/07/25 Python
Python简单生成8位随机密码的方法
2017/05/24 Python
python实现稀疏矩阵示例代码
2017/06/09 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
2018/04/23 Python
python+selenium+chromedriver实现爬虫示例代码
2020/04/10 Python
创业计划书——互联网商机
2014/01/12 职场文书
奥巴马获胜演讲稿
2014/05/15 职场文书
实习护士自荐信
2014/06/21 职场文书
代理人委托书
2014/08/01 职场文书
邮政竞聘演讲稿
2014/09/03 职场文书
2014年班级工作总结
2014/11/14 职场文书
英语辞职信怎么写
2015/02/28 职场文书
甲午大海战观后感
2015/06/02 职场文书
开天辟地观后感
2015/06/09 职场文书
2015年计算机教学工作总结
2015/07/22 职场文书
校园安全主题班会
2015/08/12 职场文书