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 相关文章推荐
10条PHP编程习惯助你找工作
Sep 29 PHP
php学习笔记之 函数声明(二)
Jun 09 PHP
提高php运行速度的一些小技巧分享
Jul 03 PHP
php循环创建目录示例分享(php创建多级目录)
Mar 04 PHP
PHP中大于2038年时间戳的问题处理方案
Mar 03 PHP
Laravel 5 框架入门(四)完结篇
Apr 09 PHP
PHP正则获取页面所有图片地址
Mar 23 PHP
php禁用函数设置及查看方法详解
Jul 25 PHP
PHP对XML内容进行修改和删除实例代码
Oct 26 PHP
PHP中in_array的隐式转换的解决方法
Mar 06 PHP
PHP实现微信商户支付企业付款到零钱功能
Sep 30 PHP
php数值计算num类简单操作示例
May 15 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最常用的ini函数分析 针对PHP.ini配置文件
2010/04/22 PHP
PHP的拦截器实例分析
2014/11/03 PHP
php报错502badgateway解决方法
2019/10/11 PHP
laravel框架使用阿里云短信发送消息操作示例
2020/02/15 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
精通JavaScript 纠正 cleanWhitespace函数
2010/03/11 Javascript
深入理解JavaScript定时机制
2010/10/29 Javascript
ie8 不支持new Date(2012-11-10)问题的解决方法
2013/07/31 Javascript
IE中getElementsByName()对有些元素无效的解决方案
2014/09/28 Javascript
jQuery分组选择器用法实例
2014/12/23 Javascript
Bootstrap的图片轮播示例代码
2015/08/31 Javascript
EasyUI加载完Html内容样式渲染完成后显示
2016/07/25 Javascript
利用JS屏蔽页面中的Enter按键提交表单的方法
2016/11/25 Javascript
jQuery插件echarts实现的多折线图效果示例【附demo源码下载】
2017/03/04 Javascript
JS实现可切换图片的幻灯切换效果示例
2019/05/24 Javascript
typescript nodejs 依赖注入实现方法代码详解
2019/07/21 NodeJs
基于Vue CSR的微前端实现方案实践
2020/05/27 Javascript
学习Python selenium自动化网页抓取器
2018/01/20 Python
谈谈python中GUI的选择
2018/03/01 Python
Python使用Pickle库实现读写序列操作示例
2018/06/15 Python
Python 获取中文字拼音首个字母的方法
2018/11/28 Python
wxPython实现画图板
2020/08/27 Python
用python的turtle模块实现给女票画个小心心
2019/11/23 Python
python with (as)语句实例详解
2020/02/04 Python
基于python实现把json数据转换成Excel表格
2020/05/07 Python
英国最全面的橄榄球联盟门票网站:Live Rugby Tickets
2018/10/06 全球购物
Guess美国官网:美国知名服装品牌
2019/04/08 全球购物
JACK & JONES荷兰官网:男士服装和鞋子
2021/03/07 全球购物
database面试题
2013/03/28 面试题
中文专业毕业生自荐信
2013/10/28 职场文书
期末学生评语大全
2014/04/24 职场文书
工作散漫检讨书
2014/09/16 职场文书
国博复兴之路观后感
2015/06/02 职场文书
美容院员工规章制度
2015/08/05 职场文书
《窃读记》教学反思
2016/02/18 职场文书
idea编译器vue缩进报错问题场景分析
2021/07/04 Vue.js