簡體   English   中英

array_key_exists和?? 在PHP 7.x中

[英]array_key_exists and ?? in php 7.x

該代碼在PHP 7.x中有效

$array = ['asda' => ['asdasd']];
$var = $array['asda']['asdasd'] ?? "yes!";
echo $var;

如果我們更換?? ?:就像在較早的PHP版本中一樣,此代碼將不起作用,例如:

$array = ['asda' => ['asdasd']];
$var = $array['asda']['asdasd'] ? $array['asda']['asdasd'] : "yes!";
echo $var;

這意味着,我們將收到如下錯誤: Notice</b>: Undefined index: asdasd in <b>[...][...]</b> on line

因此,我們可以在PHP 7.x中使用第一個示例而不擔心in behind有什么奇怪/意外的事情嗎? 我的意思是,是否可以安全地使用它,例如array_key_existsisset

使用isset()測試元素是否存在。

$var = isset($array['asda']['asdasd']) ? $array['asda']['asdasd'] : "yes!";

:? 條件運算符是一個簡單的if/then/else else-它測試第一個表達式的真實性,然后根據此條件返回第二個或第三個表達式。 測試表達式可以正常執行,因此,如果其中包含未定義的變量,索引或屬性,您將收到有關該表達式的常規警告。

?? 另一方面,null-coalescing運算符測試是否定義了第一個表達式,而不是NULL ,不僅測試它是否真實。 由於它自己檢查表達式是否已定義,因此如果沒有定義,它不會產生警告。 它專門用於替代isset()條件。

參見PHP三元運算符vs空合並運算符

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM