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(). Это идеально подходит для предоставления разумных значений по умолчанию, когда данные могут отсутствовать.
Задание
ЛегкоПрочитайте два значения из ввода: строку 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Шпаргалка
Оператор слияния с 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";
?>В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
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