嵌套空合并操作符(?)在PHP中是如何工作的?需要逐步解释执行流程
我使用的是PHP7.2.0 我已经了解了空合并运算符(?)的正常基本用法,但我无法理解嵌套空合并运算符(?)时的执行流程和功能嵌套空合并操作符(?)在PHP中是如何工作的?需要逐步解释执行流程,php,nested,php-7,execution,null-coalescing-operator,Php,Nested,Php 7,Execution,Null Coalescing Operator,我使用的是PHP7.2.0 我已经了解了空合并运算符(?)的正常基本用法,但我无法理解嵌套空合并运算符(?)时的执行流程和功能 请考虑下面的代码示例,并以逐步的方式解释我的执行流程。< /P> <?php $foo = null; $bar = null; $baz = 1; $qux = 2; echo $foo ?? $bar ?? $baz ?? $qux; // outputs 1 ?> 如果您在空合并运算符的单个步骤周围添加paren,我认为您的示例会更清晰 ech
请考虑下面的代码示例,并以逐步的方式解释我的执行流程。< /P>
<?php
$foo = null;
$bar = null;
$baz = 1;
$qux = 2;
echo $foo ?? $bar ?? $baz ?? $qux; // outputs 1
?>
如果您在空合并运算符的单个步骤周围添加paren,我认为您的示例会更清晰
echo ($foo ?? ($bar ?? ($baz ?? $qux)));
基本上,它与从左到右执行相同
空合并运算符是右关联的。这意味着操作是从右向左分组的。也就是说,表达式
a??Bc
被评估为a??(b??c)
我认为,如果您在空合并运算符的单个步骤周围添加paren,您的示例将变得更清晰
echo ($foo ?? ($bar ?? ($baz ?? $qux)));
基本上,它与从左到右执行相同
空合并运算符是右关联的。这意味着操作是从右向左分组的。也就是说,表达式
a??Bc
被评估为a??(b??c)
它的工作方式与其基本用法类似
执行流程如下所示:
isset($foo)
它没有被设置,它包含NULL
所以,选择$bar
isset($bar)
它没有被设置,它也包含NULL
所以,选择$baz
isset($baz)
它已被设置,它包含值1
,因此它被打印并停止执行它的工作方式与其基本用法类似 执行流程如下所示:
isset($foo)
它没有被设置,它包含NULL
所以,选择$bar
isset($bar)
它没有被设置,它也包含NULL
所以,选择$baz
isset($baz)
它已被设置,它包含值1
,因此它被打印并停止执行可以在一系列if/elseif/else语句中转换null合并运算符。从你的例子来看:
echo$foo$酒吧$巴兹$qux;//产出1
翻译成if/else语句:
您可以在一系列if/elseif/else语句中转换null合并运算符。从你的例子来看:
echo$foo$酒吧$巴兹$qux;//产出1
翻译成if/else语句:
将回显第一个非空条目$foo和$bar都是空的,但$baz不是正确的术语@MarkBaker。测试不针对它们是否为空,但如果它们确实为null(unset),空变量将从本例中得到响应。它并不是毫无意义地被称为空合并运算符。第一个非空的条目将被回显$foo和$bar都是空的,但$baz不是正确的术语@MarkBaker。测试不针对它们是否为空,但如果它们确实为null(unset),空变量将从本例中得到响应。它并非毫无意义地被称为空合并运算符。