我想簡單的如果速記,檢查數組是否有一個特定的鍵,如果是這樣就取消它。PHP如果速記
$test = array("hi" => "123");
isset($test["hi"]) ? unset($test["hi"]);
爲什麼這會給解析錯誤?什麼是正確的語法。
我想簡單的如果速記,檢查數組是否有一個特定的鍵,如果是這樣就取消它。PHP如果速記
$test = array("hi" => "123");
isset($test["hi"]) ? unset($test["hi"]);
爲什麼這會給解析錯誤?什麼是正確的語法。
因爲它是一個ternary operator。此代碼:
$a = ($condition)? $b : $c;
等同於:
if($condition) $a = $b;
else $a = $c;
對於你的要求,就沒有必要進行了檢查,你可以簡單地unset()
沒有檢查它,它會給出數組元素無錯誤消息:
unset($test["hi"]);
你不能在ternary conditional operator使用unset()
作爲語言結構不返回值,運營商期望以評估一些價值,而不是執行的代碼塊。另外,您的三元運算符不完整(缺少:
組件)。
無論如何,if語句如何長得多?
if (isset($test["hi"])) unset($test["hi"]);
只要你找到新的語言功能 - 使用它。沒關係,如果它是有用的或不 - 只是使用它,是現代的;-) – zerkms
三元條件操作是這樣的:
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"]
沒有設置,你仍然可以取消它......
不會有任何警告或通知出現? –
@ElGabbu我試過了,它沒有! – SteeveDroz
三元操作符** IS NOT **簡寫爲'如果' – zerkms
我感興趣的是你爲什麼不想使用if。我自己,我喜歡他們,因爲他們更容易閱讀代碼。想象一下其他人閱讀你的代碼,就像你有人在建立你的項目一樣?輕鬆理解>少字符。 – Mattis
這個例子實際上毫無意義。沒有必要檢查變量/索引是否存在,然後再將其設置。 :) – netcoder