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 相关文章推荐
PHP中替换换行符的几种方法小结
Oct 15 PHP
PHP设计模式之代理模式的深入解析
Jun 13 PHP
浅析PHP 按位与或 (^ 、&)
Jun 21 PHP
PHP中的use关键字概述
Jul 23 PHP
php实现获取文章内容第一张图片的方法
Nov 04 PHP
深入理解PHP变量的值类型和引用类型
Oct 21 PHP
php中的登陆login实例代码
Jun 20 PHP
Laravel+jQuery实现AJAX分页效果
Sep 14 PHP
php异步:在php中使用fsockopen curl实现类似异步处理的功能方法
Dec 10 PHP
php+redis实现多台服务器内网存储session并读取示例
Jan 12 PHP
实例讲解PHP中使用命名空间
Jan 27 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
Oct 24 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 CURL与java http使用方法详解
2018/01/26 PHP
JavaScript URL参数读取改进版
2009/01/16 Javascript
jQuery 操作option的实现代码
2011/03/03 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
2014/04/17 Javascript
javascript下拉框选项单击事件的例子分享
2015/03/04 Javascript
浅谈javascript构造函数与实例化对象
2015/06/22 Javascript
jquery实现全选、反选、获得所有选中的checkbox
2020/09/13 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
js插件Jcrop自定义截取图片功能
2016/10/14 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
2017/03/30 Javascript
vue-quill-editor+plupload富文本编辑器实例详解
2018/10/19 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
2019/02/26 Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
2019/07/04 Javascript
python3.4.3下逐行读入txt文本并去重的方法
2018/04/29 Python
Python简单定义与使用二叉树示例
2018/05/11 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
2018/06/20 Python
Python3爬虫之自动查询天气并实现语音播报
2019/02/21 Python
在windows下使用python进行串口通讯的方法
2019/07/02 Python
python中break、continue 、exit() 、pass终止循环的区别详解
2019/07/08 Python
Python Web框架之Django框架Form组件用法详解
2019/08/16 Python
浅谈Pytorch中的torch.gather函数的含义
2019/08/18 Python
python实现信号时域统计特征提取代码
2020/02/26 Python
Java Spring项目国际化(i18n)详细方法与实例
2020/03/20 Python
Python3将ipa包中的文件按大小排序
2020/04/17 Python
Python 解决相对路径问题:"No such file or directory"
2020/06/05 Python
北美大型运动类产品商城:Champs Sports
2017/01/12 全球购物
Superdry瑞典官网:英国日本街头风品牌
2017/05/17 全球购物
美国高档百货Nordstrom的折扣店:Nordstrom Rack
2017/11/13 全球购物
Troy-Bilt官网:草坪割草机、吹雪机、分蘖机等
2019/02/19 全球购物
初一新生军训方案
2014/05/22 职场文书
2014年党员自我评议(5篇)
2014/09/12 职场文书
企业领导班子四风对照检查材料
2014/09/27 职场文书
2015年驾驶员工作总结
2015/04/29 职场文书
举起手来观后感
2015/06/09 职场文书
初中团委工作总结
2015/08/13 职场文书
Redis中有序集合的内部实现方式的详细介绍
2022/03/16 Redis