Null Coalescing Operator
Часть раздела Основы путешествия по 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";
?>В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types5Conditional Logic
If StatementIf - ElseThe Ternary OperatorNull Coalescing OperatorSwitch StatementRecap - Making Decisions3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString OperatorsПотренируйтесь самостоятельно: Онлайн-компилятор PHP