Оператор нулевого слияния
Часть раздела Основы путешествия по PHP на Coddy. Урок 31 из 71.
Оператор объединения с null (??) позволяет удобно использовать значение по умолчанию, когда переменная равна null или не существует. Это особенно полезно при работе с данными, которые могут отсутствовать.
Синтаксис помещает ?? между переменной, которую нужно проверить, и резервным значением:
<?php
$username = null;
$displayName = $username ?? "Guest";
echo $displayName; // Guest
?>PHP проверяет, равно ли $username значению null. Поскольку это так, оператор вместо него возвращает "Guest". Если бы у $username было значение, использовалось бы оно.
<?php
$username = "Alice";
$displayName = $username ?? "Guest";
echo $displayName; // Alice
?>Оператор null-объединения также работает, если переменная вообще не была определена, и при этом ошибка не возникает:
<?php
// $color нигде не определена
$selectedColor = $color ?? "blue";
echo $selectedColor; // blue
?>Это делает ?? более лаконичным, чем использование тернарного оператора с проверками isset(). Это идеальный способ задать разумные значения по умолчанию на случай, если данные отсутствуют.
Задание
ЛегкоСчитайте из ввода два значения: строку nickname и строку theme.
Используйте оператор объединения с null для обработки потенциально отсутствующих значений:
- Создайте переменную
$userNicknameсо значениемnull. Затем используйте оператор объединения с null, чтобы присвоить$displayNicknameзначение$userNickname, если она существует и не равна null; в противном случае используйте входное значениеnickname. - Создайте переменную
$userThemeи присвойте ей входное значениеtheme. Используйте оператор объединения с null, чтобы присвоить$selectedThemeзначение$userTheme, если она существует и не равна null; в противном случае используйтеdarkв качестве значения по умолчанию. - Используйте оператор объединения с null непосредственно с неопределённой переменной
$language(не определяйте её), чтобы присвоить$displayLanguageзначение$language, если она существует; в противном случае используйтеEnglishв качестве значения по умолчанию.
Выведите каждый результат с новой строки в следующем порядке: $displayNickname, $selectedTheme, $displayLanguage.
Пример:
Если входные значения — Player1 и light, вывод должен быть таким:
Player1
light
EnglishЕсли входные значения — GuestUser и blue, вывод должен быть таким:
GuestUser
blue
EnglishПопробуйте сами
<?php
// Считайте входные данные
$nickname = trim(fgets(STDIN));
$theme = trim(fgets(STDIN));
// TODO: Напишите свой код ниже
// 1. Создайте $userNickname со значением null, затем используйте ??, чтобы присвоить значение $displayNickname
// 2. Создайте $userTheme со значением из входных данных для темы, затем используйте ??, чтобы присвоить значение $selectedTheme (по умолчанию: точный текст из инструкций)
// 3. Используйте ?? с неопределённой переменной $language, чтобы присвоить значение $displayLanguage (по умолчанию: точный текст из инструкций)
// Выведите результаты (каждый с новой строки)
echo $displayNickname . "\n";
echo $selectedTheme . "\n";
echo $displayLanguage . "\n";
?>В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы сравнения и логические операторы
Операторы сравненияРавенство и идентичностьЛогические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логика2Переменные и типы данных
ЧислаСтроки и кавычкиБулевы значенияСоглашения об именованииПовторение — инициализация переменныхПустые переменныеКонкатенация строкПолучение пользовательского вводаПриведение к другим типам5Условная логика
Оператор ifIf — ElseТернарный операторОператор нулевого слиянияОператор switchПовторение: принятие решений3Основные операторы
Арифметические операторыОператор остатка от деленияОператор возведения в степеньСоставное присваиваниеИнкремент/декрементПриоритет операторовПовторение — простые вычисленияОператоры строкПотренируйтесь самостоятельно: Онлайн-компилятор PHP