PHP中是否存在空条件运算符?

kgb*_*bph 4 php conditional nested

我想获得深层嵌套属性的值.

例如

$data->person->name->last_name;
Run Code Online (Sandbox Code Playgroud)

问题是我不知道是否personname声明.我也不想使用嵌套if语句.If对于深层嵌套的属性,语句看起来不太好.

PHP中是否存在空条件运算符?

解决了

null-conditional由于null-coalescence操作员完成工作,因此不需要操作员.

ya.*_*eck 9

从PHP 8开始就有 nullsafe 运算符。

$last_nam = $data?->person?->name?->last_name;
Run Code Online (Sandbox Code Playgroud)

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

  • 如果它是一系列方法调用而不仅仅是嵌套属性,那么它也很有用。 (2认同)

小智 8

php7 Null合并运算符 doc

$user = $data->person->name->last_name ?? 'no name';
Run Code Online (Sandbox Code Playgroud)

PHP 5.*

$user = !empty($data->person->name->last_name) ? $data->person->name->last_name :'no name';
Run Code Online (Sandbox Code Playgroud)