PHP中判断变量为空的几种方法小结


Posted in PHP onNovember 12, 2013

1. isset功能:判断变量是否被初始化

说明:它并不会判断变量是否为空,并且可以用来判断数组中元素是否被定义过
注意:当使用isset来判断数组元素是否被初始化过时,它的效率比array_key_exists高4倍左右

$a = '';
$a['c'] = '';
if (!isset($a)) echo '$a 未被初始化' . "";
if (!isset($b)) echo '$b 未被初始化' . "";
if (isset($a['c'])) echo '$a 已经被初始化' . "";
// 显示结果为
// $b 未被初始化
// $a 已经被初始化

2. empty功能:检测变量是否为"空"

说明:任何一个未初始化的变量、值为 0 或 false 或 空字符串"" 或 null的变量、空数组、没有任何属性的对象,都将判断为empty==true
注意1:未初始化的变量也能被empty检测为"空"
注意2:empty只能检测变量,而不能检测语句

$a = 0;
$b = '';
$c = array();
if (empty($a)) echo '$a 为空' . "";
if (empty($b)) echo '$b 为空' . "";
if (empty($c)) echo '$c 为空' . "";
if (empty($d)) echo '$d 为空' . "";

3. var == null功能:判断变量是否为"空"

说明:值为 0 或 false 或 空字符串"" 或 null的变量、空数组、都将判断为 null
注意:与empty的显著不同就是:变量未初始化时 var == null 将会报错。

$a = 0;
$b = array();
if ($a == null) echo '$a 为空' . "";
if ($b == null) echo '$b 为空' . "";
if ($c == null) echo '$b 为空' . "";
// 显示结果为
// $a 为空
// $b 为空
// Undefined variable: c

4. is_null功能:检测变量是否为"null"

说明:当变量被赋值为"null"时,检测结果为true
注意1:null不区分大小写:$a = null; $a = NULL 没有任何区别
注意2:仅在变量的值为"null"时,检测结果才为true,0、空字符串、false、空数组都检测为false
注意3:变量未初始化时,程序将会报错

$a = null;
$b = false;
if (is_null($a)) echo '$a 为NULL' . "";
if (is_null($b)) echo '$b 为NULL' . "";
if (is_null($c)) echo '$c 为NULL' . "";
// 显示结果为
// $a 为NULL
// Undefined variable: c

5. var === null功能:检测变量是否为"null",同时变量的类型也必须是"null"

说明:当变量被赋值为"null"时,同时变量的类型也是"null"时,检测结果为true
注意1:在判断为"null"上,全等于和is_null的作用相同
注意2:变量未初始化时,程序将会报错

总结PHP中,"NULL" 和 "空" 是2个概念。

isset  主要用来判断变量是否被初始化过
empty  可以将值为 "假"、"空"、"0"、"NULL"、"未初始化" 的变量都判断为TRUE
is_null  仅把值为 "NULL" 的变量判断为TRUE
var == null  把值为 "假"、"空"、"0"、"NULL" 的变量都判断为TRUE
var === null  仅把值为 "NULL" 的变量判断为TRUE

所以我们在判断一个变量是否真正为"NULL"时,大多使用 is_null,从而避免"false"、"0"等值的干扰。

PHP 相关文章推荐
PHP实现分页的一个示例
Oct 09 PHP
解析:使用php mongodb扩展时 需要注意的事项
Jun 18 PHP
php将mysql数据库整库导出生成sql文件的具体实现
Jan 08 PHP
PHP实用函数分享之去除多余的0
Feb 06 PHP
PHP远程调试之XDEBUG
Dec 29 PHP
简单了解WordPress开发中update_option()函数的用法
Jan 11 PHP
phalcon框架使用指南
Feb 23 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
Apr 26 PHP
php使用escapeshellarg时中文被过滤的解决方法
Jul 10 PHP
PHP基于自定义类随机生成姓名的方法示例
Aug 05 PHP
php微信公众号开发之二级菜单
Oct 20 PHP
Yii框架的路由配置方法分析
Sep 09 PHP
php不允许用户提交空表单(php空值判断)
Nov 12 #PHP
php5.3 不支持 session_register() 此函数已启用的解决方法
Nov 12 #PHP
session在php5.3中的变化 session_is_registered() is deprecated in
Nov 12 #PHP
PHP使用正则表达式清除超链接文本
Nov 12 #PHP
PHP统计二维数组元素个数的方法
Nov 12 #PHP
多个PHP中文字符串截取函数
Nov 12 #PHP
php file_get_contents抓取Gzip网页乱码的三种解决方法
Nov 12 #PHP
You might like
PHP Mysqli 常用代码集合
2016/11/12 PHP
Laravel 错误提示本地化的实现
2019/10/22 PHP
PHP 图片处理
2020/09/16 PHP
jQuery EasyUI API 中文文档 - Panel面板
2011/09/30 Javascript
div拖拽插件——JQ.MoveBox.js(自制JQ插件)
2013/05/17 Javascript
js左右弹性滚动对联广告代码分享
2014/02/19 Javascript
使用mini-define实现前端代码的模块化管理
2014/12/25 Javascript
jQuery插件PageSlide实现左右侧栏导航菜单
2015/04/12 Javascript
jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
2015/08/21 Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
2016/01/26 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
深入nodejs中流(stream)的理解
2017/03/27 NodeJs
详谈jQuery中使用attr(), prop(), val()获取value的异同
2017/04/25 jQuery
React实践之Tree组件的使用方法
2017/09/30 Javascript
node.js博客项目开发手记
2018/03/16 Javascript
微信小程序wepy框架笔记小结
2018/08/08 Javascript
element-ui 中的table的列隐藏问题解决
2018/08/24 Javascript
vue 实现小程序或商品秒杀倒计时
2019/04/14 Javascript
layui导出所有数据的例子
2019/09/10 Javascript
python装饰器使用方法实例
2013/11/21 Python
Python的面向对象思想分析
2015/01/14 Python
python实现微信接口(itchat)详细介绍
2017/10/23 Python
儿童python练习实例
2018/05/27 Python
Python运维开发之psutil库的使用详解
2018/10/18 Python
如何更优雅地写python代码
2019/07/02 Python
python 普通克里金(Kriging)法的实现
2019/12/19 Python
Html5实现移动端、PC端 刮刮卡效果
2016/06/30 HTML / CSS
GAP欧盟网上商店:GAP EU
2016/09/13 全球购物
大学本科生的个人自我评价
2013/12/09 职场文书
党员干部一句话承诺
2014/05/30 职场文书
免职证明样本
2014/10/23 职场文书
运动会100米加油稿
2015/07/21 职场文书
婚礼男方父母答谢词
2015/09/29 职场文书
java多态注意项小结
2021/10/16 Java/Android
mysql中整数数据类型tinyint详解
2021/12/06 MySQL
MySQL 原理与优化之原数据锁的应用
2022/08/14 MySQL