什么是空合并赋值?= PHP 7.4 中的运算符

2022-08-30 10:44:12

我刚刚看了一个关于即将推出的PHP 7.4功能的视频,并看到了这个新的运算符。我已经认识操作员了。??=??

这有什么不同?


答案 1

PHP 7 中,它最初是发布的,允许开发人员简化 isset() 检查和三元运算符。例如,在 PHP 7 之前,我们可能具有以下代码:

$data['username'] = (isset($data['username']) ? $data['username'] : 'guest');

PHP 7 发布时,我们有能力将它写成:

$data['username'] = $data['username'] ?? 'guest';

但是,现在,当 PHP 7.4 发布时,这可以进一步简化为:

$data['username'] ??= 'guest';

这不起作用的一种情况是,如果您希望将值分配给其他变量,因此您将无法使用此新选项。因此,虽然这很受欢迎,但可能有一些有限的用例。


答案 2

文档中

合并等于或??=运算符是赋值运算符。如果 left 参数为 null,则将右参数的值分配给左侧参数。如果该值不为 null,则不执行任何操作。

例:

// The folloving lines are doing the same
$this->request->data['comments']['user_id'] = $this->request->data['comments']['user_id'] ?? 'value';
// Instead of repeating variables with long names, the equal coalesce operator is used
$this->request->data['comments']['user_id'] ??= 'value';

因此,如果以前未分配过值,则基本上只是一个分配值的速记。


推荐