空结合运算符()
Null coalescing 是 PHP 7 中引入的一个新运算符。如果设置了运算符而不是 NULL
,则此运算符返回其第一个操作数。否则它将返回其第二个操作数。
以下示例:
$name = $_POST['name'] ?? 'nobody';
相当于两者:
if (isset($_POST['name'])) {
$name = $_POST['name'];
} else {
$name = 'nobody';
}
和:
$name = isset($_POST['name']) ? $_POST['name'] : 'nobody';
此运算符也可以链接(具有右关联语义):
$name = $_GET['name'] ?? $_POST['name'] ?? 'nobody';
这相当于:
if (isset($_GET['name'])) {
$name = $_GET['name'];
} elseif (isset($_POST['name'])) {
$name = $_POST['name'];
} else {
$name = 'nobody';
}
注意:
在字符串连接上使用合并运算符时,不要忘记使用括号 ()
$firstName = "John";
$lastName = "Doe";
echo $firstName ?? "Unknown" . " " . $lastName ?? "";
这将仅输出 John
,如果其$ firstName 为 null 且$ lastName 为 Doe
,则输出 Unknown Doe
。为了输出 John Doe
,我们必须使用这样的括号。
$firstName = "John";
$lastName = "Doe";
echo ($firstName ?? "Unknown") . " " . ($lastName ?? "");
这将仅输出 John Doe
而不是 John
。