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 相关文章推荐
JAVA/JSP学习系列之七
Oct 09 PHP
使用sockets:从新闻组中获取文章(二)
Oct 09 PHP
php方法调用模式与函数调用模式简例
Sep 20 PHP
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
Nov 02 PHP
浅谈PHP与C#的值类型指向区别的详解
May 21 PHP
深入密码加salt原理的分析
Jun 06 PHP
基于PHP+Ajax实现表单验证的详解
Jun 25 PHP
PHP代码优化之成员变量获取速度对比
Feb 28 PHP
PHP简单获取视频预览图的方法
Mar 12 PHP
PHP微信红包API接口
Dec 05 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
Feb 03 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
Apr 02 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
PHP读取MySQL数据代码
2008/06/05 PHP
php数组函数序列之array_sum() - 计算数组元素值之和
2011/10/29 PHP
检查用户名是否已在mysql中存在的php写法
2014/01/20 PHP
PHP截取IE浏览器并缩小原图的方法
2016/03/04 PHP
php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证
2016/05/04 PHP
利用php做服务器和web前端的界面进行交互
2016/10/31 PHP
php装饰者模式简单应用案例分析
2019/10/23 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
初窥JQuery(二) 事件机制(1)
2010/11/25 Javascript
浅析Javascript中“==”与“===”的区别
2014/12/23 Javascript
超实用的JavaScript代码段 附使用方法
2016/05/22 Javascript
微信小程序获取循环元素id以及wx.login登录操作
2017/08/17 Javascript
写一个移动端惯性滑动&回弹Vue导航栏组件 ly-tab
2018/03/06 Javascript
利用js实现前后台传送Json的示例代码
2018/03/29 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
2019/05/22 Javascript
原理深度解析Vue的响应式更新比React快
2020/04/04 Javascript
JavaScript动画实例之粒子文本的实现方法详解
2020/07/28 Javascript
[00:10]DOTA2全国高校联赛速递
2018/05/30 DOTA
Django模板变量如何传递给外部js调用的方法小结
2017/07/24 Python
Python3 操作符重载方法示例
2017/11/23 Python
Python实现简易Web爬虫详解
2018/01/03 Python
浅谈numpy生成数组的零值问题
2018/11/12 Python
python实现简单名片管理系统
2018/11/30 Python
pip安装py_zipkin时提示的SSL问题对应
2018/12/29 Python
Python 实现子类获取父类的类成员方法
2019/01/11 Python
使用CodeMirror实现Python3在线编辑器的示例代码
2019/01/14 Python
python函数的万能参数传参详解
2019/07/26 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
2020/12/09 Python
用CSS3将你的设计带入下个高度
2009/08/08 HTML / CSS
幼师专业毕业生自荐信
2013/09/29 职场文书
仓库主管的岗位职责
2013/12/04 职场文书
家长意见书
2015/06/04 职场文书
诚信教育主题班会
2015/08/13 职场文书
房产销售员2015年终工作总结
2015/10/22 职场文书
《狮子和鹿》教学反思
2016/02/16 职场文书
vue使用localStorage持久性存储实现评论列表
2022/04/14 Vue.js