Menu
Coddy logo textTech

Null Coalescing Operator

Часть раздела Основы путешествия по PHP на Coddy — урок 31 из 71.

Оператор нулевого слияния (??) предоставляет удобный способ использовать значение по умолчанию, когда переменная равна null или не существует. Это особенно полезно при работе с данными, которые могут отсутствовать.

Синтаксис размещает ?? между проверяемой переменной и значением по умолчанию:

<?php
$username = null;

$displayName = $username ?? "Guest";
echo $displayName; // Guest
?>

PHP проверяет, является ли $username null. Поскольку это так, оператор возвращает "Guest" вместо этого. Если бы у $username было значение, использовалось бы это значение.

<?php
$username = "Alice";

$displayName = $username ?? "Guest";
echo $displayName; // Alice
?>

Оператор нулевого слияния также работает, когда переменная вообще не определена, без возникновения ошибки:

<?php
// $color нигде не определена
$selectedColor = $color ?? "blue";
echo $selectedColor; // blue
?>

Это делает ?? чище, чем использование тернарного оператора с проверками isset(). Это идеально подходит для предоставления разумных значений по умолчанию, когда данные могут отсутствовать.

challenge icon

Задание

Легко

Прочитайте два значения из ввода: строку nickname и строку theme.

Используйте оператор объединения с null для обработки потенциально отсутствующих значений:

  1. Создайте переменную $userNickname, установленную в null. Затем используйте оператор объединения с null для присвоения $displayNickname значения $userNickname, если оно существует и не является null, в противном случае используйте значение ввода nickname.
  2. Создайте переменную $userTheme и присвойте ей значение ввода theme. Используйте оператор объединения с null для присвоения $selectedTheme значения $userTheme, если оно существует и не является null, в противном случае используйте dark в качестве значения по умолчанию.
  3. Используйте оператор объединения с null напрямую с неопределённой переменной $language (не определяйте её) для присвоения $displayLanguage значения $language, если оно существует, в противном случае используйте English в качестве значения по умолчанию.

Выведите каждый результат на новой строке в этом порядке: $displayNickname, $selectedTheme, $displayLanguage.

Пример:

Если входные данные Player1 и light, вывод должен быть:

Player1
light
English

Если входные данные GuestUser и blue, вывод должен быть:

GuestUser
blue
English

Шпаргалка

Оператор слияния с null (??) предоставляет значение по умолчанию, когда переменная равна null или не существует.

Синтаксис:

$result = $variable ?? "default value";

Если $variable равна null, используется значение по умолчанию:

$username = null;
$displayName = $username ?? "Guest";
echo $displayName; // Guest

Если $variable имеет значение, используется это значение:

$username = "Alice";
$displayName = $username ?? "Guest";
echo $displayName; // Alice

Оператор также работает с неопределёнными переменными без вызова ошибки:

// $color is not defined
$selectedColor = $color ?? "blue";
echo $selectedColor; // blue

Попробуйте сами

<?php
// Читаем ввод
$nickname = trim(fgets(STDIN));
$theme = trim(fgets(STDIN));

// TODO: Напишите свой код ниже
// 1. Создайте $userNickname, установите в null, затем используйте ?? для присвоения $displayNickname
// 2. Создайте $userTheme с вводом темы, затем используйте ?? для присвоения $selectedTheme (по умолчанию: 'dark')
// 3. Используйте ?? с неопределённой $language для присвоения $displayLanguage (по умолчанию: 'English')

// Вывод результатов (каждый на новой строке)
echo $displayNickname . "\n";
echo $selectedTheme . "\n";
echo $displayLanguage . "\n";
?>
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы