当前位置:首页 > 日记 > 正文

PHP空值检测函数与方法汇总

PHP空值检测函数与方法汇总

几乎任何入口的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)

相关文章

PS怎么快速设计一款宝蓝色的星空背

PS怎么快速设计一款宝蓝色的星空背

宝蓝,星空,背景,快速,电脑软件,好的背景就有一个很好的衬托主题,这次设计的是一个看上去神秘又浪漫的风格哦。软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1MB更新时间:2015-11-041、新建一个大小1920 px 1200 px(RGB颜色模…

javascript 玩转Date对象 | 实例讲

javascript 玩转Date对象 | 实例讲

对象,玩转,实例,电脑软件,javascript,前言:最近在做一个日期选择功能,在日期转换的时候经常换到晕,总结一下常用的Date对象的相关用法,方便日后直接查看使用~1. new Date()的使用方法有:不接收任何参数:返回当前时间;接收一个参数x: 返回1970年1月1…

深入理解React中何时使用箭头函数

深入理解React中何时使用箭头函数

函数,箭头,电脑软件,React,前言相信大家当想起箭头函数时,脑海里可能会浮现 棒,酷,简洁,有趣 等形容词,其实,我们存在一些 更充分的理由 使我们在联想起 箭头函数 时不得不想到的,本文详细的给大家介绍了关于React何时使用箭头函数的相关内容,分享…

BootStrap表单时间选择器详解

BootStrap表单时间选择器详解

表单,时间选择器,详解,电脑软件,BootStrap,前言  在大多数项目中 用户界面的时间选择是必不可少的,在项目的用户体验友好度这个大前提下,不让用户自己输入时间就显得格外的重要。而且用户输入时间还会存在格式不固定的问题,加大后台的开发量…

有关JS中的0,null,undefined,[],{}

有关JS中的0,null,undefined,[],{}

关系,电脑软件,null,JS,false,0与一些虚值的比较:0与false0==falsetrue0与'':0==''true 0与[]:0==[]true 0与NaN:0==NaNfalse0与undefined0==undefinedfalse0与null0==nullfalse 0与{}0=={}false''空值与一些值的比较'' == falsetrue…

SeaJS中use函数用法实例分析

SeaJS中use函数用法实例分析

实例分析,函数用法,电脑软件,SeaJS,本文实例讲述了SeaJS中use函数用法。分享给大家供大家参考,具体如下:有了 define 等模块定义规范的实现,我们可以开发出很多模块。但光有一堆模块不管用,我们还得让它们能跑起来。在 SeaJS 里,要启动模块系统…

JS时间控制实现动态效果的实例讲解

JS时间控制实现动态效果的实例讲解

控制,动态,实例,效果,时间,如下所示:<script> BOM //Bowers Object Model 浏览器对象模型 setTimeout()// 延迟执行一次 setInterval()// 间隔执行 var a = 300; window.setTimeout('abc(a)',3000);// 自定义函数赋值 functi…

FTP服务器端软件Serv-U教程 | 6

FTP服务器端软件Serv-U教程 | 6

教程,服务器端,电脑软件,FTP,Serv,第六节 Serv-U用户属性之完结一、&ldquo;IP Access&rdquo;(IP访问)选项。1、Deny Access(拒绝访问):选中此项则下面列出的IP地址被拒绝访问此FTP服务器。2、Allow Access(允许访问):选中此项则只有下面列出的IP地…

excel中开方的教程

excel中开方的教程

教程,电脑软件,excel,  Excel中经常需要对数据进行开方,具体该如何开方呢?下面是由小编分享的excel中开方的教程,以供大家阅读和学习。excel中开方的教程(一)步骤:使用内置的求数值的开方的函数SQRT=SQRT(16)如下图所示为求16的开方。excel…

Laravel实现autoload方法详解

Laravel实现autoload方法详解

方法,详解,电脑软件,Laravel,autoload,用了一阵Laravel后发现很少有include和require,觉得有点奇怪,思考Laravel是怎么完成文件导入的。其实Laravel依旧还是用include或者require的,只是都写在一个函数里了。就像这样:function autoload($path)…

Painter快速将普通照片制作成漂亮

Painter快速将普通照片制作成漂亮

照片,水彩画,快速,漂亮,电脑软件,本文中分享了用Corel Painter快速将照片制作成水彩画的方法。在这个电子数码时代,就算你没有美术基础,想要绘制一幅美术作品,也已经不算是一件难事了。在Corel Painter中,应有尽有的画笔,完全能满足你绘图的乐趣…

win8无线网络受限

win8无线网络受限

无线网络,电脑软件,在使用win8系统时,会遇到win8无线连接受限的情况呢?小编之前也有遇到过类似问题,不过通过简单的设置,也成功解决了。一、部分用户无线网络无法共享成功是因为无线网络硬件开关没有打开。如果您的无线网卡开关发现没有开启,可…