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 相关文章推荐
实现树状结构的两种方法
Oct 09 PHP
PHP读MYSQL中文乱码的解决方法
Dec 17 PHP
PHP 获取文件路径(灵活应用__FILE__)
Feb 15 PHP
探讨如何在PHP开启gzip页面压缩实例
Jun 09 PHP
php实现数组筛选奇数和偶数示例
Apr 11 PHP
php生成静态页面的简单示例
Apr 17 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
Nov 04 PHP
php使用ffmpeg获取视频信息并截图的实现方法
May 03 PHP
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
May 06 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
Oct 28 PHP
Laravel网站打开速度优化的方法汇总
Jul 16 PHP
PHP http请求超时问题解决方案
Nov 13 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
论坛头像随机变换代码
2006/10/09 PHP
php使用explode()函数将字符串拆分成数组的方法
2015/02/17 PHP
[原创]网络复制内容时常用的正则+editplus
2006/11/30 Javascript
javascript 获取图片颜色
2009/04/05 Javascript
JavaScript实现GriwView单列全选(自写代码)
2013/05/13 Javascript
jQuery中获取checkbox选中项等操作及注意事项
2013/11/24 Javascript
分享15个大家都熟知的jquery小技巧
2015/12/02 Javascript
javascript实现获取浏览器版本、浏览器类型
2015/12/02 Javascript
javascript的正则匹配方法学习
2016/02/24 Javascript
JS中的eval 为什么加括号
2016/04/13 Javascript
JS之相等操作符详解
2016/09/13 Javascript
详解JavaScript权威指南之对象
2016/09/27 Javascript
通俗易懂地解释JS中的闭包
2017/10/23 Javascript
node简单实现一个更改头像功能的示例
2017/12/29 Javascript
深入浅析Vue全局组件与局部组件的区别
2018/06/15 Javascript
在vue-cli的组件模板里使用font-awesome的两种方法
2018/09/28 Javascript
jQuery实现的鼠标拖动浮层功能示例【拖动div等任何标签】
2018/12/29 jQuery
JavaScript静态作用域和动态作用域实例详解
2019/06/17 Javascript
vue实现点击追加选中样式效果
2019/11/01 Javascript
深入解读VUE中的异步渲染的实现
2020/06/19 Javascript
[33:17]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python绘制直线的方法
2018/06/30 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
2018/07/26 Python
Python3进制之间的转换代码实例
2019/08/24 Python
pandas按条件筛选数据的实现
2021/02/20 Python
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
意大利专业化妆品品牌:KIKO MILANO
2017/02/01 全球购物
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
Hotels.com南非:酒店预订
2017/11/02 全球购物
大型车展策划方案
2014/02/01 职场文书
运动会入场口号
2014/06/07 职场文书
超市周年庆活动方案
2014/08/16 职场文书
追悼会家属答谢词
2015/09/29 职场文书
求职自我评价参考范文
2019/05/16 职场文书
python opencv通过4坐标剪裁图片
2021/06/05 Python
MySQL如何快速创建800w条测试数据表
2022/03/17 MySQL