Я пытаюсь понять, как 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
,
Может ли кто-нибудь объяснить мне?
Нулевой оператор объединения возвращает свой первый операнд, если он существует и не равен NULL;
В противном случае он возвращает свой второй операнд.
В вашем случае первый операнд является ложным, поэтому он присваивается переменной. Например, если вы инициализируете null для первого операнда, то он назначит значение второго операнда, как показано.
$a = null;
$x = $a ?? 'abc';
var_dump($x);
Result :
string(3) "abc"
Других решений пока нет …