嵌套null合并运算符(??)在PHP中如何工作?需要执行流程的逐步说明

1 php nested execution null-coalescing-operator php-7

我正在使用PHP 7.2.0

我已经了解了空合并运算符(??)的正常基本用法,但是我无法理解嵌套空合并运算符(??)时的执行流程和功能。

请考虑下面的代码示例,并逐步向我解释执行流程。

<?php

$foo = null;
$bar = null;
$baz = 1;
$qux = 2;

echo $foo ?? $bar ?? $baz ?? $qux; // outputs 1

?>
Run Code Online (Sandbox Code Playgroud)

Phi*_*ipp 5

我认为,如果您在空合并运算符的单个步骤周围添加括号,则您的示例将变得更加清晰。

echo ($foo ?? ($bar ?? ($baz ?? $qux)));
Run Code Online (Sandbox Code Playgroud)

基本上与从左到右执行相同。

空合并运算符是右关联的。这意味着操作从右到左分组。即,表达式a ?? b ?? c的计算结果为a ?? (b ?? c)