2012-05-14 64 views
3

有沒有一種方法可以在PHP中使用inline if語句,該語句也包含elseif?inline elseif in PHP

我將承擔邏輯會去是這樣的:

$unparsedCalculation = ($calculation > 0) ? "<span style=\"color: #9FE076;\">".$calculation : ($calculation < 0) ? "<span style=\"color: #FF736A;\">".$calculation : $calculation; 
+9

這是難以置信的難以閱讀。這將是未來的維護噩夢。 – rid

+0

您是否嘗試過發佈的代碼?它有用嗎?如果不是,你觀察到什麼錯誤/錯誤行爲? – Asaph

+0

Touche,拉杜 - 我同意。這只是我可以在我的代碼中輕鬆找到的第一個elseif聲明。 – bswinnerton

回答

15

elseif無非是else if多,所以,實際上,有沒有elseif,它只是一個方便。三元運算符沒有提供同樣的方便,因爲三元運算符是用於非常短的邏輯。

if ($a) { ... } elseif ($b) { ... } else { ... } 

是相同的

if ($a) { ... } else { if ($b) { ... } else { ... } } 

因此,三元相當於是

$a ? (...) : ($b ? (...) : (...)) 
+0

雖然嵌套三元語句應該括在圓括號中,但它與if ... else if無關。 PHP中的三元組是左關聯的(從左到右評估)。 http://php.net/manual/en/language.operators.php –

1

你可以使用嵌套的三元運算符

 (IF ? THEN : ELSE) 
     (IF ? THEN : ELSE(IF ? THEN : ELSE(IF ? THEN : ELSE)) 

可讀性更好的編碼標準CA n被發現here

1

您需要在操作問題的順序中將其中的一部分包含在括號中,但是當然,您可以這樣做。雖然沒有「elseif的」三元運營商,它有效地同樣的事情

if (condition) ? (true) : (false> if (condition) ? (true) : (false));

雖然你真的不應該這樣的代碼......它是從一個角度可讀性混淆。沒有人會看這個,並且會「甜美,忍者!」他們會說「呃,跆拳道」