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 相关文章推荐
ThinkPHP的RBAC(基于角色权限控制)深入解析
Jun 17 PHP
深入理解PHP中的Session和Cookie
Jun 21 PHP
smarty模板中拼接字符串的方法
Feb 14 PHP
PHP中file_get_contents高?用法实例
Sep 24 PHP
thinkPHP中多维数组的遍历方法
Jan 09 PHP
用PHP写的一个冒泡排序法的函数简单实例
May 26 PHP
Thinkphp和Bootstrap结合打造个性的分页样式(推荐)
Aug 01 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
Jun 21 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
Nov 10 PHP
php实现微信公众号企业转账功能
Oct 01 PHP
Laravel框架实现多数据库连接操作详解
Jul 12 PHP
PHP7 windows支持
Mar 09 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 zlib压缩和解压缩swf文件的代码
2008/12/30 PHP
PHP 错误之引号中使用变量
2009/05/04 PHP
一步一步学习PHP(4) php 函数 补充2
2010/02/15 PHP
PHP中的Streams详细介绍
2014/11/12 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
2016/05/18 PHP
PHP底层运行机制与工作原理详解
2020/07/31 PHP
Javascript 面向对象之重载
2010/05/04 Javascript
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
2013/08/28 Javascript
node.js中的path.join方法使用说明
2014/12/08 Javascript
使用JavaScript实现旋转的彩圈特效
2015/06/23 Javascript
jQuery实现简单下拉导航效果
2015/09/07 Javascript
jquery实现两边飘浮可关闭的对联广告
2015/11/27 Javascript
JavaScript实战(原生range和自定义特效)简单实例
2016/08/21 Javascript
JS+WCF实现进度条实时监测数据加载量的方法详解
2017/12/19 Javascript
JavaScript实现数组全排列、去重及求最大值算法示例
2018/07/30 Javascript
JSON的parse()方法介绍
2019/01/31 Javascript
elementUI select组件value值注意事项详解
2019/05/29 Javascript
JS实现拖拽元素时与另一元素碰撞检测
2020/08/27 Javascript
vue+Element-ui实现登录注册表单
2020/11/17 Javascript
JS数据类型分类及常用判断方法
2020/11/19 Javascript
[54:19]完美世界DOTA2联赛PWL S2 Magma vs PXG 第二场 11.28
2020/12/01 DOTA
Python设计模式之单例模式实例
2014/04/26 Python
Python获取本机所有网卡ip,掩码和广播地址实例代码
2018/01/22 Python
python单例模式获取IP代理的方法详解
2018/09/13 Python
python接口自动化(十六)--参数关联接口后传(详解)
2019/04/16 Python
pycharm中显示CSS提示的知识点总结
2019/07/29 Python
PyTorch的Optimizer训练工具的实现
2019/08/18 Python
Python使用matplotlib实现交换式图形显示功能示例
2019/09/06 Python
Python sql注入 过滤字符串的非法字符实例
2020/04/03 Python
css3实现文字首尾衔接跑马灯的示例代码
2020/10/16 HTML / CSS
AmazeUI 折叠面板的实现代码
2020/08/17 HTML / CSS
班长自荐书范文
2014/02/11 职场文书
一年级语文教学反思
2014/02/13 职场文书
回复函范文
2015/07/14 职场文书
导游词之徐州-云龙山
2019/09/29 职场文书
MYSQL常用函数介绍
2022/05/05 MySQL