Я пытаюсь понять, как на самом деле работает null coalescing operator. Итак, я протестировал множество примеров после прочтения документации в php.net и некоторых сообщений о stackoverflow.
Однако я не могу понять этот код:
<?php
$x = false ?? 'stackoverflow';
var_dump($x); // bool(false)
поскольку он эквивалентен (из php.net # слияние нуля)
isset(false) ? false : 'stackoverflow';
и поскольку isset(false) генерирует fatal error.
Не могли бы вы мне объяснить?
из документы: «В частности, этот оператор не выдает уведомления, если значение в левой части не существует, как и isset (). Это особенно полезно для ключей массива».
Как говорится, это синтаксический сахар для общего случая использования тернарного оператора в сочетании с isset. Если это не то, что вы делаете, значит, это не тот оператор, который вам нужен. Справедливости ради, документы могли бы быть сформулированы немного лучше.
Обратите внимание, что он называется «Оператор объединения Ноль», а не «Оператор ложного объединения».






Оператор объединения NULL возвращает свой первый операнд, если он существует и не равен NULL;
В противном случае он возвращает свой второй операнд.
В вашем случае первый операнд ложен, поэтому он присваивается переменной. Например, если вы инициализируете null для первого операнда, тогда он будет назначать значение второго операнда, как показано.
$a = null;
$x = $a ?? 'abc';
var_dump($x);
Result :
string(3) "abc"
Быть «эквивалентным» не означает то же самое, что и.