2012-11-23 79 views
1

很困惑,使用此三元運算符,我可以輕鬆地獲得1級if和else e.g如何在PHP中使用三元運算符嵌套if和else語句?

($blah == $blah) ? blahblah : blahblahblah; 

但如果狀況是這樣的嗎?

if($blah == blah1) 
{ 
    echo $blah1; 
} 
else if($blah == blah2) 
{ 
echo $blah2; 
} 
else 
{ 
echo $blah; 
} 

如何使用三元運算符將其轉換?

+1

在您的三重例如,'blahblahblah'永遠不會回來... – ChrisW

+3

如果你弄糊塗了由if和else三元是,那麼爲什麼你要讓閱讀變得更加困難?將替代樹裝入它不會使它對你不那麼困惑。 – mario

+0

你可以走得更遠,並有雙重嵌套,只是爲了確保沒有人可以讀你的代碼... – ChrisW

回答

5
<?php echo $blah == 'blah1' ? $blah1 : ($blah == 'blah2' ? $blah2 : $blah); ?> 

請注意else如何包裹在圓括號中。這可以一次又一次地完成,儘管讀起來會讓人感到困惑。

3

嵌套三元組是一個壞主意。提供它們是爲了簡潔。如果你有嵌套的條件,你定義沒有簡潔。

有些人甚至不喜歡他們的用法,當你有一個簡潔的聲明。就我個人而言,我發現比基於if的替代方案更加清晰易讀。

echo $success ? 'Success' : 'Failure'; 

但是我會毫不猶豫地做任何比這更復雜的事情。

+0

這。請不要。 –

+0

這只是一個運營商。如果您對此感到滿意,我不會看到問題。 – jeroen

+0

我同意。只因爲你可以不意味着你應該。嵌套三元組是不可能讀取和調試的。 –

1

($ blah == $ blah1)? $ blah1:(($ blah == $ blah2)?$ blah2:$ blah);

0

它將成爲:

echo (($blah == $blah1) ? $blah1 : (($blah == blah2) ? $blah2 : $blah);