网站首页 > 基础教程 正文
引言
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 :_)
我是 @程序员小助手 ,持续分享编程知识,欢迎关注。
猜你喜欢
- 2025-01-18 JWT: 使用JWT+PHP实现登录认证
- 2025-01-18 面向开发人员的 Kubernetes: 9 有状态应用程序 (1) 卷、持久卷和存储
- 2025-01-18 php 发送微信订阅消息
- 2025-01-18 weiphp图灵机器人存在的bug
- 2025-01-18 X语言解析器C++实现(模糊探索篇)
- 2025-01-18 100 个常见的 PHP 面试题和答案分享
- 2025-01-18 PHP 运算符和表达式
- 2025-01-18 php提示undefined index的几种解决方法
- 2025-01-18 通过冒泡排序测试Java和PHP性能
- 2025-01-18 PHP使用Phar打包控制台程序
- 05-162025前端最新面试题之HTML和CSS篇
- 05-16大数据开发基础之HTML基础知识
- 05-16微软专家告诉你Win10 Edge浏览器和EdgeHTML的区别
- 05-16快速免费将网站部署到公网方法(仅支持HTML,CSS,JS)
- 05-16《从零开始学前端:HTML+CSS+JavaScript的黄金三角》
- 05-16一个简单的标准 HTML 设计参考
- 05-16css入门
- 05-16前端-干货分享:更牛逼的CSS管理方法-层(CSS Layers)
- 最近发表
- 标签列表
-
- jsp (69)
- pythonlist (60)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- deletesql (62)
- c++模板 (62)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)