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 相关文章推荐
PHP的分页功能
Mar 21 PHP
JoshChen_php新手进阶高手不可或缺的规范介绍
Aug 16 PHP
phpmyadmin出现Cannot start session without errors问题解决方法
Aug 14 PHP
ThinkPHP中自定义目录结构的设置方法
Aug 15 PHP
PHP中set error handler函数用法小结
Nov 11 PHP
分享PHP计算两个日期相差天数的代码
Dec 23 PHP
PHP6连接SQLServer2005的三部曲
Apr 15 PHP
php变量与数组相互转换的方法(extract与compact)
Dec 02 PHP
PHP Socket网络操作类定义与用法示例
Aug 30 PHP
Laravel 集成 Geetest验证码的方法
May 14 PHP
PHP swoole和redis异步任务实现方法分析
Aug 12 PHP
基于laravel Request的所有方法详解
Sep 29 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版(5)
2006/10/09 PHP
php下将XML转换为数组
2010/01/01 PHP
IE不支持getElementsByClassName最终完美解决方案
2012/12/17 Javascript
jquery中animate的stop()方法作用实例分析
2015/01/30 Javascript
javascript中的try catch异常捕获机制用法分析
2016/12/14 Javascript
详解js的六大数据类型
2016/12/27 Javascript
微信小程序 滚动到某个位置添加class效果实现代码
2017/04/19 Javascript
js实现canvas保存图片为png格式并下载到本地的方法
2017/08/31 Javascript
Angular父组件调用子组件的方法
2018/04/02 Javascript
JavaScript递归函数解“汉诺塔”算法代码解析
2018/07/05 Javascript
微信小程序scroll-view仿拼多多横向滑动滚动条
2020/04/21 Javascript
Vue2.0 实现歌手列表滚动及右侧快速入口功能
2018/08/08 Javascript
React中使用外部样式的3种方式(小结)
2019/05/28 Javascript
JavaScript字符串处理常见操作方法小结
2019/11/15 Javascript
vue使用nprogress实现进度条
2019/12/09 Javascript
JS实现烟花爆炸效果
2020/03/10 Javascript
webpack4从0搭建组件库的实现
2020/11/29 Javascript
Python编程之event对象的用法实例分析
2017/03/23 Python
selenium + python 获取table数据的示例讲解
2018/10/13 Python
对python当中不在本路径的py文件的引用详解
2018/12/15 Python
深入解析Python小白学习【操作列表】
2019/03/23 Python
python自动识别文本编码格式代码
2019/12/26 Python
pyinstaller还原python代码过程图解
2020/01/08 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
2020/05/19 Python
纯CSS改变webkit内核浏览器的滚动条样式
2014/04/17 HTML / CSS
Stefania Mode美国:奢华设计师和时尚服装
2018/01/07 全球购物
英国最受欢迎的价格比较网站之一:MoneySuperMarket
2018/12/19 全球购物
干部对照检查材料范文
2014/08/26 职场文书
街道务虚会发言材料
2014/10/20 职场文书
2016年暑假家长对孩子评语
2015/12/01 职场文书
2016读书月活动心得体会
2016/01/14 职场文书
Nginx域名转发https访问的实现
2021/03/31 Servers
K8s部署发布Golang应用程序的实现方法
2021/07/16 Golang
SpringBoot整合Mybatis Generator自动生成代码
2021/08/23 Java/Android
Python实现位图分割的效果
2021/11/20 Python
SQL Server数据库查询出现阻塞之性能调优
2022/04/10 SQL Server