php - PHP 中是否有可选链接?

标签 php

这个问题在这里已经有了答案:





Is there a “nullsafe operator” in PHP?

(3 个回答)


9 个月前关闭。




我想在链式语句中省略对 null 的检查,例如

if($a && $a->$b && $a->$b->$c){
  $d = $a->$b->$c;
}

并改用可选链接。

这是可能的还是在 PHP 中实现的?

最佳答案

在低于 8 的 PHP 版本中,不支持可选链接。您可以使用 error control operator 模拟它的属性。 ( @ ) 这将抑制分配中通常会出现的任何错误。例如:

$b = 'b';
$c = 'c';
$e = 'e';
$a = (object)['b' => (object)['e' => 2]];
@$d = $a->$b->$c;
var_dump($d);
@$d = $a->$b->$e;
var_dump($d);
输出:
NULL
int(2)
Demo on 3v4l.org
更好的解决方案是使用空合并运算符,如@FouedMOUSSI 答案中所述。
从 PHP8(2020 年 11 月 26 日发布)开始,通过 nullsafe operator 支持可选链接(请参阅@Paul 回答或发布的副本)。

关于php - PHP 中是否有可选链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57818703/

相关文章:

php - 在继续之前显示一条 JavaScript 消息

php - IONIC 4 和 PHP 当构建 apk 时不起作用

PHPStorm 表单处理 : PHP variable not echoing, 也不发布到 sql

php - mysql单次查询获取最新10条结果

php - 如果数组的 id 相同,则对数组的值求和

php - Paypal REST PHP SDK 给我一个 400 错误(laravel 库)

php - Zend_Test_PHPUnit_Constraint_DomQuery::evaluate() 的声明应该与 PHPUnit_Framework_Constraint::evaluate() 的声明兼容

php - 在字符串中包含常量而不连接

PHP 如何使用 laravel 5 将数据从数组保存到 mysql

php - API-错误 202 "Your credentials do not allow access to this resource"