簡體   English   中英

PHP如果速記

[英]PHP If shorthand

我想用一個簡單的if速記來檢查一個數組是否有一個特定的鍵,如果是這樣的話,那么就不用了。

$test = array("hi" => "123");
isset($test["hi"]) ? unset($test["hi"]);

為什么這會給出解析錯誤? 什么是正確的語法。

您不能在三元條件運算符中使用unset() ,因為該語言構造不返回值,並且運算符期望求值為某個值,而不是執行代碼塊。 另外,您的三元運算符不完整(缺少a :組件)。

if語句如何更長?

if (isset($test["hi"])) unset($test["hi"]);

因為它是三元運算符 這段代碼:

$a = ($condition)? $b : $c;

相當於:

if($condition) $a = $b;
else $a = $c;

根據你的要求,不需要檢查,你可以簡單地unset()數組元素而不先檢查它,它不會給出任何錯誤消息:

unset($test["hi"]);

三元條件運算符如下所示:

a ? b : c

您缺少該c子句,並且您的b子句不是返回值的表達式。 這個結構不是 if語句的簡寫,而是你試圖使用它而不是它的設計。

使用if語句:

if (isset($test['hi']))
    unset($test['hi']);

還有更明確​​的array_key_exists 將其文檔與isset文檔進行比較,以確定哪個更適合您的需求。

你不需要測試任何東西。 如果您嘗試取消設置非設置變量,則不會發生任何事情。

相當於您的代碼將是:

$test = array("hi" => "123");
unset($test["hi"]);

即使沒有設置$test["hi"] ,你仍然可以取消它...

$test = array("hi" => "123");
!isset($test["hi"]) ?: unset($test["hi"]);

暫無
暫無

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

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