PHP空值检测函数与方法汇总


Posted in PHP onNovember 19, 2017

几乎任何入口的HTTP请求我们都会去检测它携带的参数,类似 isset() empty() 的函数一定不少见。
以下的测试结果基于 PHP7.16

是否定义判断: isset()

可以使用 isset() 函数判断一个变量是否定义,数组内某个元素是否被初始化,它的效率比 array_key_exists() 高4倍左右

$a = 'test';
$b = array('key1' => 'value1');
$class = new stdClass();
var_dump(isset($class->test->test)); // 判断对象属性是否定义:输出 bool(false)
var_dump(isset($a)); // 判断变量是否定义:输出 bool(true)
var_dump(isset($c)); // 判断变量是否定义:输出 bool(false)
var_dump(isset($b['key1'])); // 判断数组元素是否定义:输出 bool(true)
var_dump(isset($b['key2'])); // 判断数组元素是否定义:输出 bool(false)

是否为空判断:empty()

empty() 函数, 检测变量是否为空
任何一个未初始化的量,0,false,空字符串,null,空数组,使用 empty 判断都会返回 true

var_dump(empty($c));     // 输出 bool(true)
var_dump(empty($b['key2'])); // 输出 bool(true)
var_dump(empty($class));   // 输出 bool(false)
var_dump($class);       // 输出 object(stdClass)#1 (0) {}
var_dump(empty($class->test->test)); // 输出 bool(true)
class EmptyClass{};
$empty_class = new EmptyClass();
var_dump(empty($empty_class));// 输出 bool(false)

null == $var 判断

除了判断未定义的变量会报错外,和 empty 判断一样,0,false,空数组等都会返回 true,实质是 == 表达式会对两边的变量做自动类型转换,所以判断结果为 true。

is_null判断

单变量赋值为 null 或者 NULL时,判断结果 true,其他情况为 false,如果变量未定义,则会报错

null === $var 判断

表达式: === 为强制类型检测,不仅会检测表达式两边变量的值,还会检测变量的类型,都相等才会返回true。

0 === $var : 检测是否为 0
false === $var:检测是否为 false
null === $var: 检测是否为 null
'' === $var:检测是否为空字符串,包含任意字符都返回 false,如空格字符,\0
使用 === 能够很好的区分空字符串,0,false和null,甚至连整形和浮点型都能区分。

$zero_int = 0;
$zero_bool = false;
$zero_double = 0.0;
$zero_null = null;
$zero_str = '';
var_dump(0 === $zero_int);   // 输出 bool(true)
var_dump(0 === $zero_bool);  // 输出 bool(false)
var_dump(0 === $zero_double); // 输出 bool(false)
var_dump(0 === $zero_null);  // 输出 bool(false)
var_dump(0 === $zero_str);   // 输出 bool(false)
var_dump('' === $zero_str);  // 输出 bool(true)
var_dump('' === $zero_int);  // 输出 bool(false)
var_dump('' === $zero_bool);  // 输出 bool(false)
var_dump(0.0 === $zero_double);// 输出 bool(true)
var_dump(0.0 === $zero_int);  // 输出 bool(false)
PHP 相关文章推荐
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
Oct 09 PHP
php json_encode值中大括号与花括号区别
Sep 30 PHP
php采用ajax数据提交post与post常见方法总结
Nov 10 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
Nov 18 PHP
PHP实现基于文本的摩斯电码生成器
Jan 11 PHP
php+flash+jQuery多图片上传源码分享
Jul 27 PHP
jQuery+php简单实现全选删除的方法
Nov 28 PHP
php可变长参数处理函数详解
Feb 22 PHP
ThinkPHP中调用PHPExcel的实现代码
Apr 08 PHP
php实现表单提交上传文件功能
May 28 PHP
yii框架数据库关联查询操作示例
Oct 14 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
Oct 30 PHP
使用PHPStorm+XDebug搭建单步调试环境
Nov 19 #PHP
php利用云片网实现短信验证码功能的示例代码
Nov 18 #PHP
swoole和websocket简单聊天室开发
Nov 18 #PHP
php单元测试phpunit入门实例教程
Nov 17 #PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 #PHP
PHP流Streams、包装器wrapper概念与用法实例详解
Nov 17 #PHP
PHP实现求两个字符串最长公共子串的方法示例
Nov 17 #PHP
You might like
了解咖啡雨林联盟认证 什么是雨林认证 雨林认证是什么意思
2021/03/05 新手入门
php代码运行时间查看类代码分享
2011/08/06 PHP
Yii 快速,安全,专业的PHP框架
2014/09/03 PHP
php生成百度sitemap站点地图类函数实例
2014/10/17 PHP
php结合curl实现多线程抓取
2015/07/09 PHP
asp 取文本框名称代码
2008/12/02 Javascript
JS正则中的RegExp对象对象
2012/11/07 Javascript
简介JavaScript中的setTime()方法的使用
2015/06/11 Javascript
javascript 使用for循环时该注意的问题-附问题总结
2015/08/19 Javascript
js实现的Easy Tabs选项卡用法实例
2015/09/06 Javascript
【JS+CSS3】实现带预览图幻灯片效果的示例代码
2016/03/17 Javascript
微信小程序 配置文件详细介绍
2016/12/14 Javascript
Jquery Easyui选项卡组件Tab使用详解(10)
2016/12/18 Javascript
JS实现双击内容变为可编辑状态
2017/03/03 Javascript
jQuery插件HighCharts绘制简单2D折线图效果示例【附demo源码】
2017/03/21 jQuery
基于vue配置axios的方法步骤
2017/11/09 Javascript
基于Vue的ajax公共方法(详解)
2018/01/20 Javascript
JavaScript判断数组类型的方法
2019/10/23 Javascript
基于JS实现table导出Excel并保留样式
2020/05/19 Javascript
Nodejs实现WebSocket代码实例
2020/05/19 NodeJs
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
2020/08/20 Javascript
[01:32]2016国际邀请赛中国区预选赛CDEC战队教练采访
2016/06/26 DOTA
Python 匹配任意字符(包括换行符)的正则表达式写法
2009/10/29 Python
python基础_文件操作实现全文或单行替换的方法
2017/09/04 Python
Python装饰器用法示例小结
2018/02/11 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
2018/04/18 Python
django传值给模板, 再用JS接收并进行操作的实例
2018/05/28 Python
Python多继承原理与用法示例
2018/08/23 Python
Python中的枚举类型示例介绍
2019/01/09 Python
在python中用url_for构造URL的方法
2019/07/25 Python
Python3将数据保存为txt文件的方法
2019/09/12 Python
python系列 文件操作的代码
2019/10/06 Python
css3中新增的样式使用示例附效果图
2014/08/19 HTML / CSS
Lentiamo比利时:便宜的隐形眼镜
2020/02/14 全球购物
《角的初步认识》教学反思
2016/02/17 职场文书
2019如何书写演讲稿?
2019/07/01 职场文书