PHP 中是否有空条件运算符?

Is there a null-conditional operator in PHP?

我想获取一个深度嵌套的值属性。

例如

$data->person->name->last_name;

问题是我不确定是否声明了 personname。我也不想使用嵌套的 if 语句。 If 语句不适合深度嵌套的属性。

PHP中是否有空条件运算符?

已解决

不需要 null-conditional 操作员,因为 null-coalescence 操作员可以完成这项工作。

php7 空合并运算符 doc

$user = $data->person->name->last_name ?? 'no name';

php5.*

$user = !empty($data->person->name->last_name) ? $data->person->name->last_name :'no name';

在 PHP7 中,引入了一个新功能,即空合并运算符 (??)。它用于与isset()函数结合使用来代替三元运算。

Null 合并运算符 returns 它的第一个操作数(如果存在且不为 NULL);否则它 returns 它的第二个操作数。

以你的例子为例:

$username = isset($data->person->name) ? isset($data->person->last_name) : 'not name';

PHP 8 以来就有了 nullsafe 运算符。

$last_nam = $data?->person?->name?->last_name;

nullsafe 运算符相对于 null 合并的优势在于,前者允许指定链中应该是 null 安全的确切部分。