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 相关文章推荐
5.PHP的其他功能
Oct 09 PHP
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
May 10 PHP
PHP中copy on write写时复制机制介绍
May 13 PHP
PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
Jul 11 PHP
php获得网站访问统计信息类Compete API用法实例
Apr 02 PHP
php简单统计字符串单词数量的方法
Jun 19 PHP
CodeIgniter多语言实现方法详解
Jan 20 PHP
详解php中反射的应用
Mar 15 PHP
浅谈ThinkPHP中initialize和construct的区别
Apr 01 PHP
PHP编程实现计算抽奖概率算法完整实例
Aug 09 PHP
PHP 实现文件压缩解压操作的方法
Jun 14 PHP
PHP实现创建一个RPC服务操作示例
Feb 23 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
全国FM电台频率大全 - 3 河北省
2020/03/11 无线电
php中实现记住密码自动登录的代码
2011/03/02 PHP
PHP安全防范技巧分享
2011/11/03 PHP
Aster vs KG BO3 第三场2.18
2021/03/10 DOTA
[HTML/CSS/Javascript]WWTJS
2007/09/25 Javascript
将jQuery应用于login页面的问题及解决
2009/10/17 Javascript
JavaScript与DropDownList 区别分析
2010/01/01 Javascript
jQuery1.6 正式版发布并提供下载
2011/05/05 Javascript
基于jquery的时间段实现代码
2012/08/02 Javascript
javascript获取wx.config内部字段解决微信分享
2016/03/09 Javascript
一分钟理解js闭包
2016/05/04 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
bmob js-sdk 在vue中的使用教程
2018/01/21 Javascript
ajax跨域访问遇到的问题及解决方案
2019/05/23 Javascript
你了解vue3.0响应式数据怎么实现吗
2019/06/07 Javascript
微信小程序图片自适应实现解析
2020/01/21 Javascript
Python探索之创建二叉树
2017/10/25 Python
Python3 中文文件读写方法
2018/01/23 Python
详解python里的命名规范
2018/07/16 Python
使用TensorFlow实现SVM
2018/09/06 Python
python远程邮件控制电脑升级版
2019/05/23 Python
pytorch获取vgg16-feature层输出的例子
2019/08/20 Python
如何用OpenCV -python3实现视频物体追踪
2019/12/04 Python
python except异常处理之后不退出,解决异常继续执行的实现
2020/04/25 Python
Python列表推导式实现代码实例
2020/09/09 Python
康帕斯酒店预订:Compass Hospitality(支持中文)
2018/08/23 全球购物
韩国最大的购物网站:Gmarket
2019/06/20 全球购物
《愚公移山》教学反思
2014/02/20 职场文书
小学“向国旗敬礼”网上签名寄语活动总结
2014/09/27 职场文书
办公室务虚会发言材料
2014/10/20 职场文书
医院党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
教师工作表现评语
2014/12/31 职场文书
建筑工地资料员岗位职责
2015/04/13 职场文书
60句有关成长的名言
2019/09/04 职场文书
详解redis在微服务领域的贡献
2021/10/16 Redis
详解nginx安装过程并代理下载服务器文件
2022/02/12 Servers