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 解决utf-8和gb2312编码转换问题
Mar 18 PHP
php strstr查找字符串中是否包含某些字符的查找函数
Jun 03 PHP
PHP 图片文件上传实现代码
Dec 29 PHP
php+ajax实现图片文件上传功能实例
Jun 17 PHP
浅析php单例模式
Nov 25 PHP
再Docker中架设完整的WordPress站点全攻略
Jul 29 PHP
php限制文件下载速度的代码
Oct 20 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
Feb 04 PHP
PHP中include()与require()的区别说明
Feb 14 PHP
详解thinkphp中的volist标签
Jan 15 PHP
PHP使用CURL实现下载文件功能示例
Jun 03 PHP
PHP Ajax跨域问题解决方案代码实例
Aug 01 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
Base64在线编码解码实现代码 演示与下载
2011/01/08 PHP
PHP中PDO的错误处理
2011/09/04 PHP
thinkphp浏览历史功能实现方法
2014/10/29 PHP
深入理解PHP原理之执行周期分析
2016/06/01 PHP
php preg_match的匹配不同国家语言实例
2016/12/29 PHP
thinkphp5框架前后端分离项目实现分页功能的方法分析
2019/10/08 PHP
jQuery控制iFrame(实例代码)
2013/11/19 Javascript
jQuery的几个我们必须了解的特点
2015/05/03 Javascript
js实现内容显示并使用json传输数据
2016/03/16 Javascript
Chrome浏览器的alert弹窗禁止再次弹出后恢复的方法
2016/12/30 Javascript
JS实现JSON.stringify的实例代码讲解
2017/02/07 Javascript
利用js定义一个导航条菜单
2017/03/14 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
2017/06/13 Javascript
原生JS实现旋转轮播图+文字内容切换效果【附源码】
2018/09/29 Javascript
es6数据变更同步到视图层的方法
2019/03/04 Javascript
vue微信分享的实现(在当前页面分享其他页面)
2019/04/16 Javascript
JS开发 富文本编辑器TinyMCE详解
2019/07/19 Javascript
微信小程序实现手势滑动卡片效果
2019/08/26 Javascript
Python数据分析中Groupby用法之通过字典或Series进行分组的实例
2017/12/08 Python
python使用webdriver爬取微信公众号
2018/08/31 Python
pycharm修改界面主题颜色的方法
2019/01/17 Python
python自定义线程池控制线程数量的示例
2019/02/22 Python
使用Django开发简单接口实现文章增删改查
2019/05/09 Python
python+OpenCV实现车牌号码识别
2019/11/08 Python
Python如何优雅删除字符列表空字符及None元素
2020/06/25 Python
几款Python编译器比较与推荐(小结)
2020/10/15 Python
国际知名设计师时装商店:Coggles
2016/09/05 全球购物
Lee牛仔裤澳大利亚官网:美国著名牛仔裤品牌
2017/09/02 全球购物
static全局变量与普通的全局变量有什么区别
2014/05/27 面试题
什么是.net的Remoting技术
2016/07/08 面试题
党员作风建设自查报告
2014/10/23 职场文书
承诺函范文
2015/01/21 职场文书
企业工会工作总结2015
2015/05/13 职场文书
市级三好生竞选稿
2015/11/21 职场文书
2019大学生暑期实习心得总结
2019/08/21 职场文书
Java使用httpRequest+Jsoup爬取红蓝球号码
2021/07/02 Java/Android