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 相关文章推荐
建立文件交换功能的脚本(一)
Oct 09 PHP
PHP实现多服务器session共享之NFS共享的方法
Mar 16 PHP
使用bcompiler对PHP文件进行加密的代码
Aug 29 PHP
深入php常用函数的使用汇总
Jun 08 PHP
php实现文件下载(支持中文文名)
Dec 04 PHP
PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
May 10 PHP
thinkphp文件引用与分支结构用法实例
Nov 26 PHP
CodeIgniter辅助之第三方类库third_party用法分析
Jan 20 PHP
利用php生成验证码
Feb 23 PHP
php实现支持中文的文件下载功能示例
Aug 30 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
Apr 27 PHP
PHP自定义递归函数实现数组转JSON功能【支持GBK编码】
Jul 17 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 ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
日常整理PHP中简单的图形处理(经典)
2015/10/26 PHP
thinkPHP5.0框架命名空间详解
2017/03/18 PHP
Laravel实现搜索的时候分页并携带参数
2019/10/15 PHP
JS查看对象功能代码
2008/04/25 Javascript
原生JS操作网页给p元素添加onclick事件及表格隔行变色
2013/12/01 Javascript
javascript trim函数在IE下不能用的解决方法
2014/09/12 Javascript
js读取json的两种常用方法示例介绍
2014/10/19 Javascript
js表单提交和submit提交的区别实例分析
2015/12/10 Javascript
gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
2016/02/21 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
2016/06/15 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
2016/10/05 Javascript
微信小程序开发之选项卡(窗口底部TabBar)页面切换
2017/04/12 Javascript
基于AngularJS的拖拽文件上传的实例代码
2017/07/15 Javascript
了解javascript中变量及函数的提升
2019/05/27 Javascript
js实现移动端图片滑块验证功能
2020/09/29 Javascript
[06:07]DOTA2-DPC中国联赛 正赛 Ehome vs VG 选手采访
2021/03/11 DOTA
关于Python的一些学习总结
2018/05/25 Python
Python合并多个Excel数据的方法
2018/07/16 Python
Python 共享变量加锁、释放详解
2019/08/28 Python
复化梯形求积分实例——用Python进行数值计算
2019/11/20 Python
聊聊python中的异常嵌套
2020/09/01 Python
CSS3 绘制BMW logo实的现代码
2013/04/25 HTML / CSS
全球领先的各类汽车配件零售商:Advance Auto Parts
2016/08/26 全球购物
ProBikeKit澳大利亚:自行车套件,跑步和铁人三项装备
2016/11/30 全球购物
台湾深度自由行旅游平台:Tripbaa趣吧
2017/10/10 全球购物
卡骆驰新加坡官网:Crocs新加坡
2018/06/12 全球购物
印度在线购买电子产品网站:Croma
2020/01/02 全球购物
实习自我鉴定范文
2013/10/30 职场文书
高中的职业生涯规划书
2013/12/28 职场文书
工作交流会欢迎词
2014/01/12 职场文书
群众路线专项整治方案
2014/10/27 职场文书
基层干部个人对照检查及整改措施
2014/10/28 职场文书
普希金诗歌赏析(6首)
2019/08/22 职场文书
python单元测试之pytest的使用
2021/06/07 Python
详解Spring Security中的HttpBasic登录验证模式
2022/03/17 Java/Android