я использую PHP 7.2.0
Я понял нормальное базовое использование нулевой оператор объединения (??) но я не в состоянии понять поток выполнения и функциональность, когда вложенный оператор (??) объединяется.
Пожалуйста, рассмотрите пример кода ниже и объясните мне последовательность выполнения пошаговым способом.
<?php
$foo = null;
$bar = null;
$baz = 1;
$qux = 2;
echo $foo ?? $bar ?? $baz ?? $qux; // outputs 1
?>
Я думаю, что ваш пример станет чище, если вы добавите скобки вокруг отдельных шагов оператора объединения нулей.
echo ($foo ?? ($bar ?? ($baz ?? $qux)));
По сути, это то же самое, что выполнение слева направо.
Нулевой оператор слияния является ассоциативным справа. Это означает, что операции сгруппированы справа налево. Т.е. выражение a ?? b ?? c
оценивается как a ?? (b ?? c)
,
Он работает аналогичным образом, как и в его основном использовании.
Ход выполнения будет следующим:
isset($foo)
он не был установлен, он содержит NULL
итак $bar
isset($bar)
это не было установлено, это слишком содержит NULL
итак $baz
isset($baz)
это было установлено, оно содержит значение 1
Итак, он печатается и выполнение останавливается.