Рассмотрим следующий код:
<?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 = '';
}
?>