3分钟短文 | PHP判断null,别再 == 了,你真控制不住
wptr33 2025-09-01 15:49 9 浏览
引言
PHP 程序中很多地方会用到判断是否为空,比如字符串为空,数组为空,对象为空,或者其他数据类型为默认空值。
今天我们说一下判断 null 的两种方法的区别。一般可以使用 is_null 函数,判断变量是否是 null,还可以使用 === null 判断是否与 null 值绝对相等。
这两者有什么区别呢?
学习时间
比如有一个 if 语句要判断某个变量是否为 null,有下面两种写法:
if (is_null($var)) do_something();
if ($var === null) do_something();
到底哪种方式更优,效率更高?
这里有个前提,只要是变量经过初始化,两种方式相同。只不过,is_null 还要加上函数调用的开销,而 === 则直接执行条件判断操作,效率更高。
===用于严格的数据比较。NULL只有一个“值”,因此可以与NULL(这是null“值”的PHP常量)进行比较。
is_null 正在检查变量是否为NULL数据类型。
因为PHP是脚本语言,其数据类型动态指定,那么有必要梳理一下各种空值在做运算时候的返回值了:
特别需要指出的是,empty 函数相当于 == null,而 is_null 相当于 === null,后者比较更为严格。
而 isset 函数是 is_null / === null 的反向操作。
深入学习
实际编程中我们倾向于使用 is_null 函数,因为这样写程序更容易读。比如在较为流行的 Laravel 框架内,就是用了大量的 is_null 函数。比如用户对象判断为null。
if (! is_null($this->user)) {
return $this->user;
}
比如对模型判断为空,则创建新的对象:
protected function newModelQuery($model = null)
{
return is_null($model)
? $this->createModel()->newQuery()
: $model->newQuery();
}
还有一个原因是,is_null 作为函数,可以方便地作为回调函数引用。比如对数组内所有元素做非 null 过滤。
$arrayOfNullValues = array_filter($myArray, 'is_null');
写在最后
本文介绍了PHP判断是否为 null 的两种方式,希望大家能够熟练使用,写出更优雅健壮的代码。
Happy coding :_)
我是 @程序员小助手 ,持续分享编程知识,欢迎关注。
相关推荐
- 如何在Linux系统中安装Docker?_如何在Linux系统中安装软件
-
在这篇博客中,我将引导您通过简单的步骤完成安装Docker的过程,安装docker只是小菜一碟,你只需要运行几条命令就大功告成了!...
- 我用Docker安装FastDFS,再也不用头疼那些错误提示了
-
在这里插入图片描述FastDFS的安装我们还是通过Docker来安装实现吧,直接在Linux上还装还是比较繁琐的,但就学习而言Docker安装还是非常高效的。Docker环境请自行安装哦,不清楚的...
- 01背包问题的js解决方式_背包算法java
-
如果你有兴趣看这个相信你已经对背包问题有所了解,所以关于背包问题的描述,我就不写了。...
- 净现值函数_净现值函数名词解释
-
此页面特定于Office2010的VisualBasicforApplications(VBA)语言参考。返回一个Double,指定基于一系列定期现金流(付款和收款)和贴现率的投资的...
- Excel 数据分组双利器:GROUPBY 与 FREQUENCY 函数详解
-
这是一篇关于Excel中GROUPBY和FREQUENCY函数的详细教学教程。这两个函数都用于数据分组统计,但它们的应用场景、功能和用法有显著不同。第一部分:强大的新函数——GROUP...
- 熬夜7天,我总结了JavaScript与ES的25个知识点
-
前言说起JavaScript,大家都知道是一门脚本语言。那么ES是什么鬼呢?ES全称ECMAScript,是JavaScript语言的国际标准。最近,我总结了25条JavaScript的基础特性相关...
- 傻傻分不清楚的点积与矩阵乘法 Part3
-
作者:MinkyungKang...
- Python中的数据导入与查询_python如何导入数据文件
-
适用场景...
- 10个JavaScript一行代码,解决90%的开发难题
-
在JavaScript开发过程中,我们经常会遇到一些看似复杂但实际上可以通过简洁的代码解决的问题。下面分享10个JavaScript一行代码技巧,解决日常开发中的常见难题。...
- 提高 PHP 代码质量的 36 计_php代码调试心得
-
1.不要使用相对路径常常会看到:require_once('../../lib/some_class.php');该方法有很多缺点:...
- PHP替换字符串关键词长词优先函数
-
如何实现phpstr_replace替换关键词,如何控制长词优先,也不难,我就写了个这样的函数。functionmyreplace($string,$replaces){...
- PHP 中数组是如何灵活支持多数据类型的?
-
hello,大家好,我是张张,「架构精进之路」公号作者。...
- 3分钟短文 | PHP判断null,别再 == 了,你真控制不住
-
引言PHP程序中很多地方会用到判断是否为空,比如字符串为空,数组为空,对象为空,或者其他数据类型为默认空值。今天我们说一下判断null的两种方法的区别。一般可以使用is_null函数,判断变...
- C#基础:ref 参数_c# ref和out参数的区别
-
例在下面,我们定义了ref方法的语法。ref方法具有retrun类型,例如int、float或string,以及一个methodName,它可以是方法的任何合适名称,我们定义了参数...
- 「C#.NET 拾遗补漏」05:操作符的几个骚操作
-
阅读本文大概需要1分钟。大家好,这是极客精神【C#.NET拾遗补漏】专辑的第5篇文章,今天要讲的内容是操作符。操作符的英文是Operator,在数值计算中习惯性的被叫作运算符,所以在中文的...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
因果推断Matching方式实现代码 因果推断模型
-
程序员的开源月刊《HelloGitHub》第 71 期
-
Java面试必考问题:什么是乐观锁与悲观锁
-
假如有100W个用户抢一张票,除了负载均衡办法,怎么支持高并发?
-
详细介绍一下Redis的Watch机制,可以利用Watch机制来做什么?
-
如何将AI助手接入微信(打开ai手机助手)
-
redission YYDS spring boot redission 使用
-
SparkSQL——DataFrame的创建与使用
-
Distinct vs Group By:MySQL 查询性能到底谁更强?
-
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)
- git commit (34)