3 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊
直到 PHP 8.0。
這已在Nullsafe 運(yùn)營商 RFC 中投票通過。
語法將為?->.
所以聲明:
if ($a && $a->$b && $a->$b->$c) {
$d = $a->$b->$c;
}
可以改寫為:
$d = $a?->$b?->$c; // If you are happy to assign null to $d upon failure
或者:
if ($a?->$b?->$c) {
$d = $a->$b->$c; // If you want to keep it exactly per the previous statement
}
Nullsafe 運(yùn)算符適用于屬性和方法。

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊
在低于 8 的 PHP 版本中,不支持可選鏈接。您可以通過使用錯(cuò)誤控制運(yùn)算符( )來模擬它的屬性,該運(yùn)算符@將抑制通常會(huì)從分配中發(fā)生的任何錯(cuò)誤。例如:
$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)
3v4l.org 上的演示
更好的解決方案是使用空合并運(yùn)算符,如@FouedMOUSSI 答案中所述。
從 PHP8(2020 年 11 月 26 日發(fā)布)開始,通過nullsafe 運(yùn)算符支持可選鏈接(請參閱 @Paul 回答或發(fā)布的副本)。
- 3 回答
- 0 關(guān)注
- 388 瀏覽
添加回答
舉報(bào)