(??=)双问号加等号,这个运算符是做什么用的?

25

曾经我在使用php7的时候遇到了一个运算符??=。我尝试查找它的用法,但很难找到。我查阅了php运算符以及大部分官方资源,虽然有所有运算符的描述,包括复合运算符如.=+=等等,但却没有??=的说明。

例如,PHP Operators网站中虽然列出了所有运算符的描述,包括普通运算符(如.+)和复合运算符(如.=+=),但并没有??=的说明,因此起初让我感到困惑,认为它是完全不同的东西。

这个问题其实很简单明了,但整个情况有点令人困惑,所以我尝试帮助像我一样的php初学者


谢谢,你是对的,但是你看,你不能以随意的方式搜索它,因为例如,针对你的请求“??=”的谷歌搜索没有返回有用的信息 - 对于“双问号等于号”也是如此,所以你无法找到信息所在。 - Green Joffer
1
请查看https://wiki.php.net/rfc/null_coalesce_equal_operator - Siva
1个回答

26

最终,我决定自己编写代码并进行观察 - 它是如何工作和它做了什么。

在PHP7.0中添加了Null Coalescing运算符

$username = $_GET['username'] ?? 'not passed'; 

我们的 $username 将拥有 $_GET['username'] 的值-如果它存在且不为空,否则 $username 将得到 'not passed' 字符串。 但有时您可能会遇到这样的情况,需要检查变量本身的存在性和非空性:

$first_test = $first_test ?? 'not started';

同时,您可以使用复合版本的空值合并运算符——'??='

$first_test ??= 'not started';

就是这样,只是针对那些需要检查自身变量的情况的复合版本的“??”。


5
??= 是在 PHP 7.4 及以上版本中新增的语法 - 演示 - 文档 - DarkBee
谢谢,我不知道那个运算符及其简写是在不同的版本中发布的。 - Green Joffer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接