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 相关文章推荐
Adodb的十个实例(清晰版)
Dec 31 PHP
php分页函数示例代码分享
Feb 24 PHP
PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
May 10 PHP
thinkphp使用phpmailer发送邮件的方法
Nov 24 PHP
php中smarty变量修饰用法实例分析
Jun 11 PHP
PHP中的类型提示(type hinting)功能介绍
Jul 01 PHP
Yii操作数据库实现动态获取表名的方法
Mar 29 PHP
php微信公众平台交互与接口详解
Nov 28 PHP
PHP实现生成模糊图片的方法示例
Dec 21 PHP
PHP使用file_get_contents发送http请求功能简单示例
Apr 29 PHP
yii2安装详细流程
May 23 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
Apr 05 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
优化使用mysql存储session的php代码
2008/01/10 PHP
PHP json_decode函数详细解析
2014/02/17 PHP
PHP实现通用alert函数的方法
2015/03/11 PHP
thinkPHP引入类的方法详解
2016/12/08 PHP
Yii2结合Workerman的websocket示例详解
2018/09/10 PHP
通过Javascript创建一个选择文件的对话框代码
2012/06/16 Javascript
鼠标事件的screenY,pageY,clientY,layerY,offsetY属性详解
2015/03/12 Javascript
springMVC结合AjaxForm上传文件
2016/07/12 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
2016/08/02 Javascript
JS文件/图片从电脑里面拖拽到浏览器上传文件/图片
2017/03/08 Javascript
JS实现点击循环切换显示内容的方法
2017/10/19 Javascript
微信网页授权并获取用户信息的方法
2018/07/30 Javascript
JS实现轮播图效果
2020/01/11 Javascript
vue组件入门知识全梳理
2020/09/21 Javascript
Openlayers实现距离面积测量
2020/09/28 Javascript
用python 制作图片转pdf工具
2015/01/30 Python
在Python中使用全局日志时需要注意的问题
2015/05/06 Python
python简单实现操作Mysql数据库
2018/01/29 Python
python DataFrame 取差集实例
2019/01/30 Python
Python 通过requests实现腾讯新闻抓取爬虫的方法
2019/02/22 Python
详解python的argpare和click模块小结
2019/03/31 Python
Python操作redis实例小结【String、Hash、List、Set等】
2019/05/16 Python
python替换字符串中的子串图文步骤
2019/06/19 Python
Python中的延迟绑定原理详解
2019/10/11 Python
自定义Django_rest_framework_jwt登陆错误返回的解决
2020/10/18 Python
CSS3地图动态实例代码(圆圈向外扩散)
2018/06/15 HTML / CSS
Bally巴利英国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/07 全球购物
What's the difference between deep copy and shallow copy? (深拷贝与浅拷贝有什么区别)
2015/11/10 面试题
工商企业管理专业自荐信范文
2014/04/12 职场文书
医疗器械售后服务承诺书
2014/05/21 职场文书
乡镇群众路线专项整治方案
2014/11/03 职场文书
环境建议书
2015/02/04 职场文书
装修公司管理制度
2015/08/05 职场文书
PyCharm 配置SSH和SFTP连接远程服务器
2022/05/11 Python
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers
JavaScript实现音乐播放器
2022/08/14 Javascript