PHP 中是否有空条件运算符?
Is there a null-conditional operator in PHP?
我想获取一个深度嵌套的值属性。
例如
$data->person->name->last_name;
问题是我不确定是否声明了 person
或 name
。我也不想使用嵌套的 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 安全的确切部分。
我想获取一个深度嵌套的值属性。
例如
$data->person->name->last_name;
问题是我不确定是否声明了 person
或 name
。我也不想使用嵌套的 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 安全的确切部分。