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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌套null合并运算符(??)如何在PHP中工作?需要逐步解释执行流程相关的知识,希望对你有一定的参考价值。

我使用的是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)

另一答案

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

执行流程如下:

  1. 它检查isset($foo)它没有被设置,它包含NULL所以,去$bar
  2. 它检查isset($bar)它没有被设置,它也包含NULL所以,去$baz
  3. 它检查isset($baz)它已被设置,它包含值1所以,它被打印并执行停止。

以上是关于嵌套null合并运算符(??)如何在PHP中工作?需要逐步解释执行流程的主要内容,如果未能解决你的问题,请参考以下文章

嵌套组件如何在角度 5 或 6 中工作

@JsonInclude(Include.NON_NULL) 如何在 Spring Boot 中工作

如何使用媒体查询或运算符使 SASS 嵌套嵌套媒体查询工作

EL 空运算符如何在 JSF 中工作?

如何使警报在 php 中工作

樱桃采摘如何在 Azure devops 中工作 [重复]