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

时间:2018-08-22 03:59:15

标签: php nested conditional

我想获取深层嵌套属性的值。

例如

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

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

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

已解决

由于null-conditional运算符可以完成工作,因此不需要null-coalescence运算符。

3 个答案:

答案 0 :(得分:5)

php7空合并运算符 doc

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

php 5。*

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

答案 1 :(得分:1)

在PHP 7中,引入了一个新功能,即空合并运算符(??)。它与isset()函数一起用于替换三元运算。

如果存在且非NULL,则Null合并运算符返回其第一个操作数;否则,返回第一个操作数。否则,它将返回其第二个操作数。

例如:

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

答案 2 :(得分:1)

PHP 8 开始存在 nullsafe 运算符。

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

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