我想获取深层嵌套属性的值。
例如
$data->person->name->last_name;
问题是我不确定是否声明了person
或name
。我也不想使用嵌套的if
语句。 If
语句不适用于深度嵌套的属性。
PHP中是否有空条件运算符?
已解决
由于null-conditional
运算符可以完成工作,因此不需要null-coalescence
运算符。
答案 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 安全的确切部分。