Комбинированный оператор сравнения (‹=›) и оператор объединения с нулевым значением (??)

Подробная информация о комбинированном операторе сравнения (‹=>) и операторе объединения с нулевым значением (??)


person Neel Ion    schedule 15.06.2015    source источник
comment
<=>, ??, операторы сравнения   -  person castis    schedule 15.06.2015
comment
Вы думали о чтении документации?   -  person vascowhite    schedule 15.06.2015
comment
@vascowhite Да, но в документации есть только краткая информация, а не подробности.   -  person Neel Ion    schedule 15.06.2015
comment
Ответ находится здесь - stackoverflow.com/questions/33666256/   -  person Peter    schedule 12.11.2015


Ответы (1)


Комбинированный оператор сравнения возвращает -1, 0 или 1, в зависимости от того, что больше другого:

if ($x <=> $y == -1) {
    echo '$x < $y';
} elseif ($x <=> $y == 1) {
    echo '$x > $y';
} else {
    echo '$x == $y';
}

Оператор объединения null аналогичен выполнению $x ?: $y, но проверяет null вместо false-y:

$x = null;
$y = 'hello';
echo $x ?? $y; //hello
echo $x ?: $y; //hello
$x = 0;
$y = 1;
echo $x ?? $y; //0;
echo $x ?: $y; //1
person dave    schedule 15.06.2015
comment
?? более сложный, чем это. Это также делает isset(). - person Andrea; 17.06.2015
comment
и я считаю, что он не выдает уведомление, если переменная не определена, например, empty() - person arod; 31.10.2015