PHP 空合并运算符(??)

示例

空合并是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为$lastName Doe,则将输出Unknown Doe。为了输出John Doe,我们必须使用这样的括号。

$firstName = "John";
$lastName = "Doe";
echo ($firstName ?? "Unknown") . " " . ($lastName ?? "");

这将输出John Doe而不是John仅输出。