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 相关文章推荐
桌面中心(二)数据库写入
Oct 09 PHP
PHP操作mysql函数详解,mysql和php交互函数
May 19 PHP
PHP容易忘记的知识点分享
Apr 30 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
Jun 25 PHP
php 获取SWF动画截图示例代码
Feb 10 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
Jul 22 PHP
PHP控制反转(IOC)和依赖注入(DI)
Mar 13 PHP
PHP实现求解最长公共子串问题的方法
Nov 17 PHP
基于swoole实现多人聊天室
Jun 14 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
May 27 PHP
解决laravel session失效的问题
Oct 14 PHP
一文搞懂PHP中的抽象类和接口
May 25 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
PHP4和PHP5性能测试和对比 测试代码与环境
2007/08/17 PHP
php实现的二分查找算法示例
2017/06/20 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
2017/07/18 PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
2018/12/25 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
JS中style属性
2006/10/11 Javascript
JS两种定义方式的区别、内部原理
2013/11/21 Javascript
js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解
2015/11/09 Javascript
Spring mvc 接收json对象
2015/12/10 Javascript
Jquery为DIV添加click事件的简单实例
2016/06/02 Javascript
JS批量替换内容中关键词为超链接
2017/02/20 Javascript
js实现前面自动补全位数的方法
2018/10/10 Javascript
Vue CLI3基础学习之pages构建多页应用
2019/06/02 Javascript
js变量值传到php过程详解 将php解析成数据
2019/06/26 Javascript
Javascript实现鼠标点击冒泡特效
2019/12/24 Javascript
小程序websocket心跳库(websocket-heartbeat-miniprogram)
2020/02/23 Javascript
Python生成随机验证码的两种方法
2015/12/22 Python
Python开发SQLite3数据库相关操作详解【连接,查询,插入,更新,删除,关闭等】
2017/07/27 Python
基于python 字符编码的理解
2017/09/02 Python
Python操作MySQL数据库的三种方法总结
2018/01/30 Python
DataFrame 将某列数据转为数组的方法
2018/04/13 Python
numpy matrix和array的乘和加实例
2018/06/28 Python
python获取中文字符串长度的方法
2018/11/14 Python
python实现三维拟合的方法
2018/12/29 Python
Python3 pip3 list 出现 DEPRECATION 警告的解决方法
2019/02/16 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
2020/04/13 Python
Python使用pyyaml模块处理yaml数据
2020/04/14 Python
使用CSS3来匹配横屏竖屏的简单方法
2015/08/04 HTML / CSS
CSS3制作hover下划线动画
2017/03/27 HTML / CSS
英国汽车座椅和婴儿车购物网站:Uber Kids
2017/04/19 全球购物
马德里竞技官方网上商店:Atletico Madrid Shop
2019/03/31 全球购物
综合实践活动总结
2014/05/05 职场文书
争先创优公开承诺书
2014/08/30 职场文书
2014年小学语文工作总结
2014/12/20 职场文书
浅谈如何写好演讲稿?
2019/06/12 职场文书
Nginx使用X-Accel-Redirect实现静态文件下载的统计、鉴权、防盗链、限速等
2021/04/04 Servers