第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

PHP 中是否有可選鏈?

PHP 中是否有可選鏈?

PHP
侃侃爾雅 2022-01-02 16:28:40
我想在鏈?zhǔn)秸Z句中省略對 null 的檢查,例如if($a && $a->$b && $a->$b->$c){  $d = $a->$b->$c;}并改用可選鏈接。這是可能的還是在 PHP 中實(shí)現(xiàn)的?
查看完整描述

3 回答

?
慕桂英546537

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊

根據(jù)這篇文章 “空合并運(yùn)算符(在 PHP 7 中引入)表示為這樣??用于檢查值是否已設(shè)置或?yàn)榭?,或者換句話說,如果值存在且不為空,則它返回第一個(gè)操作數(shù),否則返回第二個(gè)操作數(shù)。”

所以你可以很容易地做到

$d = $a->$b->$c ?? 'DEFAULT' ;

編輯:這僅適用于屬性,而不適用于方法(正如下面評(píng)論中的“hackel”所指出的那樣)


查看完整回答
反對 回復(fù) 2022-01-02
?
三國紛爭

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)算符適用于屬性和方法。


查看完整回答
反對 回復(fù) 2022-01-02
?
慕哥9229398

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ā)布的副本)。


查看完整回答
反對 回復(fù) 2022-01-02
  • 3 回答
  • 0 關(guān)注
  • 388 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)