Оператор объединения с null в PHP

Рассмотрим следующий код:

<?php if (isset($arr['test'])) { $elem = $arr['test']; } else { $elem = 'empty'; } ?>

Этот код можно переписать через тернарный оператор:

<?php $elem = isset($arr['test']) ? $arr['test'] : 'empty'; ?>

Однако, и первый вариант кода, и второй, вызывают некоторое неудобство. Для упрощения таких конструкций был придуман оператор объединения с null, представляющий собой команду ??. Перепишем наш код через этот оператор:

<?php $elem = $arr['test'] ?? 'empty'; ?>

Перепишите следующий код через изученный оператор:

<?php $user = ['name' => 'john', 'age' => 30]; if (isset($user['name'])) { $name = $user['name']; } else { $name = 'unknown'; } ?>

Цепочка

Операторы объединения можно вызывать друг за другом цепочкой. В следующем примере в переменную запишется либо первый элемент массива, либо второй элемент массива, либо заданная строка, если этих элементов нет:

<?php $elem = $arr['test1'] ?? $arr['test2'] ?? 'empty'; ?>

Перепишите следующий код через изученный оператор:

<?php if (isset($user['name'])) { $result = $user['name']; } elseif (isset($user['surname'])) { $result = $user['surname']; } else { $result = ''; } ?>