我使用的是PHP 7.2.0
我已经理解了空合并运算符(??)的正常基本用法,但我无法理解嵌套空合并运算符(??)时的执行流程和功能。
请考虑下面的代码示例,并逐步向我解释执行流程。
<?php
$foo = null;
$bar = null;
$baz = 1;
$qux = 2;
echo $foo ?? $bar ?? $baz ?? $qux; // outputs 1
?>
如果你在空合并运算符的单个步骤周围添加parens,我认为你的例子变得更清晰了。
echo ($foo ?? ($bar ?? ($baz ?? $qux)));
基本上它与从左到右执行相同。
空合并运算符是右关联运算符。这意味着操作从右到左分组。即,表达式a ?? b ?? c
被评估为a ?? (b ?? c)
。
它的工作方式与其基本用法类似。
执行流程如下:
isset($foo)
它没有被设置,它包含NULL
所以,去$bar
isset($bar)
它没有被设置,它也包含NULL
所以,去$baz
isset($baz)
它已被设置,它包含值1
所以,它被打印并执行停止。