arlis, дело не в примерах, а в том что вы не понимаете, как работает приведение типов в РНР. И чем отличается "пустое" значение от несуществующего
Смотрим: https://3v4l.org/pglg5
// Пример использования оператора
$action = $_POST['action'] ?? 'default';
// Пример выше аналогичен следующему коду
if (isset($_POST['action'])) {
$action = $_POST['action'];
} else {
$action = 'default';
}
Выражение (expr1) ?? (expr2) вычисляется так: expr2, если expr1 равен null и expr1 в противном случае.
На практике, этот оператор не вызывает предупреждения или ошибки, если левый операнд не существует, как и isset(). Это очень полезно для ключей массива.
arlis, да, эти два примера аналогичны.
но оба они не имеют никакого отношения к вопросу, который был задан
не являясь равнозначной заменой коду, который приведён в вопросе (и в ответе выше).
там проверяется пустое значение
у вас - существование значения