nested — Как работает вложенный оператор объединения нулей (??) в PHP? Нужно пошаговое объяснение потока выполнения

я использую PHP 7.2.0

Я понял нормальное базовое использование нулевой оператор объединения (??) но я не в состоянии понять поток выполнения и функциональность, когда вложенный оператор (??) объединяется.

Пожалуйста, рассмотрите пример кода ниже и объясните мне последовательность выполнения пошаговым способом.

<?php

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

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

?>

1

Решение

Я думаю, что ваш пример станет чище, если вы добавите скобки вокруг отдельных шагов оператора объединения нулей.

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

По сути, это то же самое, что выполнение слева направо.

Нулевой оператор слияния является ассоциативным справа. Это означает, что операции сгруппированы справа налево. Т.е. выражение a ?? b ?? c оценивается как a ?? (b ?? c),

3

Другие решения

Он работает аналогичным образом, как и в его основном использовании.

Ход выполнения будет следующим:

  1. Это проверяет isset($foo) он не был установлен, он содержит NULL итак $bar
  2. Это проверяет isset($bar) это не было установлено, это слишком содержит NULL итак $baz
  3. Это проверяет isset($baz) это было установлено, оно содержит значение 1 Итак, он печатается и выполнение останавливается.
1

По вопросам рекламы [email protected]