operator-keyword - (??=) 双问号和等号,那个运算符有什么作用?

标签 operator-keyword php-7.4

这个问题在这里已经有了答案:





What is null coalescing assignment ??= operator in PHP 7.4

(6 个回答)


12 个月前关闭。




一旦我偶然发现带有运算符 ??= 的 php7 代码.我试图搜索,它清楚地做了什么,但无法轻松找到。我试图读出 php 操作符,甚至大多数官方资源都有所有操作符的描述,甚至像 .= 这样的复合操作符。 , += ,但没有对 ??= 的描述
例如,PHP Operators保留所有运算符的描述,以直接形式( .+ ),作为复合( .=+= ),但没有 ??= ,正因为如此,我首先感到困惑,并认为这完全是另一回事。
问题简单明了,但整个案例有点困惑,这就是为什么我试图帮助像我这样的其他 php 初学者

最佳答案

所以最终我决定自己编写代码并观察它的工作原理和作用。
在 PHP7.0 中添加了 Null Coalescing operator :

$username = $_GET['username'] ?? 'not passed'; 
我们的 $username 将具有 $_GET['username'] 值 - 如果它存在且不为空,否则 $username 将获得“未通过”字符串。
但有时您可能会遇到这种情况,当您需要检查变量本身是否存在和不可为空时:
$first_test = $first_test ?? 'not started';
在这种情况下,您可以使用空合并运算符的复合版本 - '??=' :
$first_test ??= 'not started';
就是这样,只是'??'的复合版本对于您检查自身变量的情况。

关于operator-keyword - (??=) 双问号和等号,那个运算符有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64441592/

相关文章:

C++ 运算符覆盖

c - 前后增量运算符关联性问题 :(

php - PHP 中抽象类和特征的类型协变

php - 在 Ubuntu 20.04 上更新 PHP 7.4 不会更新到最新版本

c++ - 有没有办法动态更改比较运算符?

c++ - Override = operator linked linked c++ 深拷贝

c++ - 使用什么代码更好地进行运算符重载

PHP 7.4类型化属性迭代

apache2 - ubuntu 21.10 : apache2 fails to start 中的 php7.4

php - 如何从 PHP 7.4+ 中的对象中删除属性