2016-03-19 29 views
-2

通常我所做的if/else條件是這樣的:使條件成爲一條線?

if(empty($data['key'])) 
{ 
    $err = "empty . $key "; 
} 

,但我看到有是ternary operator.

我真不明白這是如何工作..有人能告訴我一個例子嗎?我怎樣才能在三元邏輯中轉換這種情況?

+2

三元運算符記錄**非常多**。你真的需要開一個新的問題嗎?爲什麼不是Google呢? '$ var =();' –

+0

所以應該是這樣的:'$ var =(empty($ data ['key'])$ error =「empty。$關鍵「:繼續;'? –

+0

http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary –

回答

2

我不確定你想要用你的代碼做什麼。 您檢查它是否爲空,然後嘗試通過集中一個空值將$err設置爲一個值。

也許這更可能是你想要的。

// Ternary operator 
$err = empty($data['key']) ? "empty key" : ''; 
# -----------IF-----------------THEN ---- ELSE 

// Ternary operator (nesting) (not recommended) 
// Changing empty() to isset() you must rewrite the entire logic structure. 
$err = empty($data) ? 'empty' : is_numeric($data) ? $data : 'not numeric'; 
# ---------IF--------- THEN -------ELSEIF-----------THEN-----ELSE 

// Null Coalescing operator ?? available in PHP 7. 
$err = $data['key'] ?? 'empty value'; 
# ---- IF ISSET USE --- ELSE value 

// Nesting 
$err = $data['key'] ?? $_SESSION['key'] ?? $_COOKIE['key'] ?? 'no key'; 
#  IF ISSET USE -- IF ISSET USE ------ IF ISSET USE ------ELSE 
+0

如果我有多個條件要做?我想存儲在同一個變量,我的意思是在空檢查is_numeric等等..在同一個err變量後,我該如何做到這一點?謝謝 –

+0

和添加類似if(空($ data)&&!is_numeric($ data))是可能的嗎? –

+2

嵌套三元操作很快會污染代碼,不推薦,因爲它也很難閱讀,我寧願推薦修補上面的評論中的if語句(是的,可能的) – Xorifelse