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
NO3第三帝国留言簿制作过程
Oct 09 PHP
php 动态多文件上传
Jan 18 PHP
phpmyadmin config.inc.php配置示例
Aug 27 PHP
php常用hash加密函数
Nov 22 PHP
PHP实现的简单mock json脚本分享
Feb 10 PHP
PHP使用mysql_fetch_object从查询结果中获取对象集的方法
Mar 18 PHP
PHP实现链式操作的原理详解
Sep 16 PHP
YII2框架中excel表格导出的方法详解
Jul 21 PHP
yii gridview实现时间段筛选功能
Aug 15 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
Sep 09 PHP
浅析PHP中的 inet_pton 网络函数
Dec 16 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
当年上海收录机产品生产,进口和价格情况
2021/03/04 无线电
一周学会PHP(视频)Http下载
2006/12/12 PHP
PHP获取类中常量,属性,及方法列表的方法
2009/04/09 PHP
采用PHP函数memory_get_usage获取PHP内存清耗量的方法
2011/12/06 PHP
PHP中单引号与双引号的区别分析
2014/08/19 PHP
浅谈PHP中静态方法和非静态方法的相互调用
2016/10/04 PHP
PHP中静态变量的使用方法实例分析
2016/12/01 PHP
JS无法捕获滚动条上的mouse up事件的原因猜想
2012/03/21 Javascript
Egret引擎开发指南之视觉编程
2014/09/03 Javascript
JS简单实现无缝滚动效果实例
2016/08/24 Javascript
最好用的Bootstrap fileinput.js文件上传组件
2016/12/12 Javascript
原生js开发的日历插件
2017/02/04 Javascript
jQuery插件DataTables分页开发心得体会
2017/08/22 jQuery
如何更好的编写js async函数
2018/05/13 Javascript
JS调用安卓手机摄像头扫描二维码
2018/10/16 Javascript
javascript面向对象三大特征之封装实例详解
2019/07/24 Javascript
vue实现文件上传读取及下载功能
2020/11/17 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
2020/10/31 Javascript
[16:19]教你分分钟做大人——风暴之灵
2015/03/11 DOTA
python多重继承新算法C3介绍
2014/09/28 Python
浅谈用Python实现一个大数据搜索引擎
2017/11/28 Python
在Python中pandas.DataFrame重置索引名称的实例
2018/11/06 Python
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
如何使用python把ppt转换成pdf
2019/06/29 Python
通过实例了解Python str()和repr()的区别
2020/01/17 Python
Python turtle画图库&amp;&amp;画姓名实例
2020/01/19 Python
美国体育用品商店:Rally House(NCAA、NFL、MLB、NBA、NHL和MLS)
2018/01/03 全球购物
北京RT科技有限公司.net工程师面试题
2013/02/15 面试题
金秋助学感谢信
2015/01/21 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
培训简讯范文
2015/07/20 职场文书
运动会运动员赞词
2015/07/22 职场文书
2016年校长新年寄语
2015/08/17 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python
教你使用pyinstaller打包Python教程
2021/05/27 Python
Java org.w3c.dom.Document 类方法引用报错
2021/08/07 Java/Android