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版)
Oct 09 PHP
PHP 开源AJAX框架14种
Aug 24 PHP
Mysql数据库操作类( 1127版,提供源码下载 )
Dec 02 PHP
奇怪的PHP引用效率问题分析
Mar 23 PHP
simplehtmldom Doc api帮助文档
Mar 26 PHP
php模板原理讲解
Nov 13 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
Apr 29 PHP
PHP实现抓取迅雷VIP账号的方法
Jul 30 PHP
PHP实现导出excel数据的类库用法示例
Oct 15 PHP
php显示页码分页类的封装
Jun 08 PHP
php通过header发送自定义数据方法
Jan 18 PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
Dec 31 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实现二进制和文本相互转换的方法
2015/04/18 PHP
改进:论坛UBB代码自动插入方式
2006/12/22 Javascript
jQuery dialog 异步调用ashx,webservice数据的代码
2010/08/03 Javascript
javascript中的delete使用详解
2013/04/11 Javascript
Javascript基础教程之while语句
2015/01/18 Javascript
JavaScript实现Flash炫光波动特效
2015/05/14 Javascript
原生JS实现旋转木马式图片轮播插件
2016/04/25 Javascript
浅谈Cookie的生命周期问题
2016/08/02 Javascript
简单实现jQuery轮播效果
2017/08/18 jQuery
从vue基础开始创建一个简单的增删改查的实例代码(推荐)
2018/02/11 Javascript
小程序实现列表多个批量倒计时
2021/01/29 Javascript
vue中使用[provide/inject]实现页面reload的方法
2019/09/30 Javascript
关于Vue中axios的封装实例详解
2019/10/20 Javascript
JavaScript enum枚举类型定义及使用方法
2020/05/15 Javascript
[13:25]VP vs VICI (BO3)
2018/06/07 DOTA
python用ConfigObj读写配置文件的实现代码
2013/03/04 Python
python从ftp下载数据保存实例
2013/11/20 Python
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
2016/05/28 Python
Linux下为不同版本python安装第三方库
2016/08/31 Python
Python selenium实现微博自动登录的示例代码
2018/05/16 Python
Tensorflow 查看变量的值方法
2018/06/14 Python
20行python代码的入门级小游戏的详解
2019/05/05 Python
Python 类的魔法属性用法实例分析
2019/11/21 Python
Python 串口通信的实现
2020/09/29 Python
x-ua-compatible content=”IE=7, IE=9″意思理解
2013/07/22 HTML / CSS
使用postMessage让 iframe自适应高度的方法示例
2019/10/08 HTML / CSS
香港万宁官方海外旗舰店:香港健与美连锁店
2018/09/27 全球购物
美国乒乓球设备、配件和服装品牌:Killerspin
2020/06/07 全球购物
公司JAVA开发面试题
2015/04/02 面试题
写演讲稿要注意的六件事
2014/01/14 职场文书
餐饮业员工工作决心书
2014/03/11 职场文书
盲山观后感
2015/06/11 职场文书
2015年中学图书馆工作总结
2015/07/22 职场文书
禁毒主题班会教案
2015/08/14 职场文书
2016年学习雷锋精神广播稿
2015/12/17 职场文书
pytorch 实现变分自动编码器的操作
2021/05/24 Python