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 相关文章推荐
WML,Apache,和 PHP 的介绍
Oct 09 PHP
用windows下编译过的eAccelerator for PHP 5.1.6实现php加速的使用方法
Sep 30 PHP
linux iconv方法的使用
Oct 01 PHP
批量去除PHP文件中bom的PHP代码
Mar 13 PHP
ThinkPHP关联模型操作实例分析
Sep 23 PHP
php流量统计功能的实现代码
Sep 29 PHP
PHP实现无限极分类图文教程
Nov 25 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
Dec 18 PHP
PHP读取大文件的几种方法介绍
Oct 27 PHP
php表单习惯用的正则表达式
Oct 11 PHP
PHP空值检测函数与方法汇总
Nov 19 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
Nov 23 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实现图象锐化代码
2007/06/14 PHP
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
2009/12/16 PHP
PHP代码优化技巧小结
2015/09/29 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
2015/10/13 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
2020/12/16 PHP
firefox下对ajax的onreadystatechange的支持情况分析
2009/12/14 Javascript
解决遍历时Array.indexOf产生的性能问题
2012/07/03 Javascript
Javascript Throttle & Debounce应用介绍
2013/03/19 Javascript
JavaScript中字符串分割函数split用法实例
2015/04/07 Javascript
jQuery实现自动滚动到页面顶端的方法
2015/05/22 Javascript
JavaScript实现点击按钮字体放大、缩小
2016/02/29 Javascript
基于javascript实现九九乘法表
2016/03/27 Javascript
深入浅析javascript中的作用域(推荐)
2016/07/19 Javascript
javascript实现瀑布流动态加载图片原理
2016/08/12 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
2017/03/30 Javascript
Angular2自定义分页组件
2017/04/19 Javascript
Angularjs自定义指令Directive详解
2017/05/27 Javascript
浅谈Angular单元测试总结
2019/03/22 Javascript
layui 选择列表,打勾,点击确定返回数据的例子
2019/09/02 Javascript
Node 代理访问的实现
2019/09/19 Javascript
微信内置开发 iOS修改键盘换行为搜索的解决方案
2019/11/06 Javascript
[59:30]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
Python MD5文件生成码
2009/01/12 Python
Python数据类型详解(一)字符串
2016/05/08 Python
python中执行shell的两种方法总结
2017/01/10 Python
在Python web中实现验证码图片代码分享
2017/11/09 Python
PyCharm代码回滚,恢复历史版本的解决方法
2018/10/22 Python
对python打乱数据集中X,y标签对的方法详解
2018/12/14 Python
selenium python 实现基本自动化测试的示例代码
2019/02/25 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
2019/11/05 Python
jupyter lab文件导出/下载方式
2020/04/22 Python
详解python定时简单爬取网页新闻存入数据库并发送邮件
2020/11/27 Python
Myprotein中国网站:欧洲畅销运动营养品牌
2021/02/11 全球购物
爱心募捐通知范文
2015/04/27 职场文书
大学生社会实践感想
2015/08/11 职场文书
2016党员党章学习心得体会
2016/01/14 职场文书