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

问题描述 投票:1回答:2

我使用的是PHP 7.2.0

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

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

<?php

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

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

?>
php nested php-7 execution null-coalescing-operator
2个回答
3
投票

如果你在空合并运算符的单个步骤周围添加parens,我认为你的例子变得更清晰了。

echo ($foo ?? ($bar ?? ($baz ?? $qux)));

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

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


1
投票

它的工作方式与其基本用法类似。

执行流程如下:

  1. 它检查isset($foo)它没有被设置,它包含NULL所以,去$bar
  2. 它检查isset($bar)它没有被设置,它也包含NULL所以,去$baz
  3. 它检查isset($baz)它已被设置,它包含值1所以,它被打印并执行停止。
© www.soinside.com 2019 - 2024. All rights reserved.