空值合并运算符
本课属于 Coddy PHP 学习旅程的“基础知识”单元。第 31 课,共 71 课。
空值合并运算符(??)提供了一种便捷的方式,让你在变量为 null 或不存在时使用默认值。处理可能缺失的数据时,这尤其有用。
语法会将 ?? 放在要检查的变量和备用值之间:
<?php
$username = null;
$displayName = $username ?? "Guest";
echo $displayName; // Guest
?>PHP 会检查 $username 是否为 null。由于它的值为 null,运算符会改为返回 "Guest"。如果 $username 有值,就会使用该值。
<?php
$username = "Alice";
$displayName = $username ?? "Guest";
echo $displayName; // Alice
?>即使变量完全没有定义,空合并运算符也能正常工作,且不会触发错误:
<?php
// $color 没有在任何地方定义
$selectedColor = $color ?? "blue";
echo $selectedColor; // blue
?>这使得 ?? 比使用带有 isset() 检查的三元运算符更简洁。它非常适合在数据可能缺失时提供合理的默认值。
挑战
简单从输入中读取两个值:一个字符串 nickname 和一个字符串 theme。
使用空合并运算符处理可能缺失的值:
- 创建一个变量
$userNickname,并将其设为null。然后使用空合并运算符进行赋值:如果$userNickname存在且不为 null,就将其值赋给$displayNickname;否则使用输入值nickname。 - 创建一个变量
$userTheme,并将输入值theme赋给它。使用空合并运算符进行赋值:如果$userTheme存在且不为 null,就将其值赋给$selectedTheme;否则使用dark作为默认值。 - 直接对未定义的变量
$language使用空合并运算符(不要定义它),进行赋值:如果$language存在,就将其值赋给$displayLanguage;否则使用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";
?>这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: PHP 在线编译器