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 相关文章推荐
删除无限级目录与文件代码共享
Jul 12 PHP
PHP编程最快明白(第一讲 软件环境和准备工作)
Oct 25 PHP
PHP开发框架laravel安装与配置教程
Mar 13 PHP
PHP导入导出Excel代码
Jul 07 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
Dec 05 PHP
php使用curl代理实现抓取数据的方法
Feb 03 PHP
php实现的中文分词类完整实例
Feb 06 PHP
PHP最常用的正则表达式
Feb 13 PHP
PHP实现的观察者模式实例
Jun 21 PHP
基于php流程控制语句和循环控制语句(讲解)
Oct 23 PHP
PhpStorm本地断点调试的方法步骤
May 21 PHP
Laravel框架Auth用户认证操作实例分析
Sep 29 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
文件上传类
2006/10/09 PHP
第五节 克隆 [5]
2006/10/09 PHP
php 远程关机操作的代码
2008/12/05 PHP
php提示undefined index的几种解决方法
2012/05/21 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
2013/12/22 PHP
php socket通信(tcp/udp)实例分析
2016/02/14 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
PHP反射原理与用法深入分析
2019/09/28 PHP
js写的方法实现上传图片之后查看大图
2014/03/05 Javascript
javascript实现全角与半角字符的转换
2015/01/07 Javascript
js实现浏览本地文件并显示扩展名的方法
2015/08/17 Javascript
AngularJS入门教程之XHR和依赖注入详解
2016/08/18 Javascript
AngularJs  Creating Services详解及示例代码
2016/09/02 Javascript
JQuery和PHP结合实现动态进度条上传显示
2016/11/23 Javascript
详谈$.data()的用法和作用
2017/02/13 Javascript
vue2.0嵌套路由实现豆瓣电影分页功能(附demo)
2017/03/13 Javascript
浅谈Vue.js中的v-on(事件处理)
2017/09/05 Javascript
一个Vue页面的内存泄露分析详解
2018/06/25 Javascript
vue仿淘宝滑动验证码功能(样式模仿)
2019/12/10 Javascript
怎么理解wx.navigateTo的events参数使用详情
2020/05/18 Javascript
vue点击Dashboard不同内容 跳转到同一表格的实例
2020/11/13 Javascript
three.js 实现露珠滴落动画效果的示例代码
2021/03/01 Javascript
[56:48]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Win7上搭建Cocos2d-x 3.1.1开发环境
2014/07/03 Python
Django中的CACHE_BACKEND参数和站点级Cache设置
2015/07/23 Python
详解Python编程中time模块的使用
2015/11/20 Python
python使用RNN实现文本分类
2018/05/24 Python
python斐波那契数列的计算方法
2018/09/27 Python
Python 取numpy数组的某几行某几列方法
2019/10/24 Python
Python内置类型性能分析过程实例
2020/01/29 Python
详解基于python的全局与局部序列比对的实现(DNA)
2020/10/07 Python
波兰在线运动商店:YesSport
2020/07/23 全球购物
什么时候用assert
2015/05/08 面试题
教师评语大全
2014/04/28 职场文书
2014年加油站工作总结
2014/12/04 职场文书
独生子女证明范本
2015/06/19 职场文书