如何編寫PHP三元運算符如何使用elseif部分編寫PHP三元運算符?我看到的基本實施例if和else類似這樣的PHP三元運算符的部分:echo (true) ? "yes" : "no"; //prints yesecho (false) ? "yes" : "no"; //prints no如何將這樣的“elseif”部分輸入三元運算符?<?php if($result->vocation == 1){ echo "Sorcerer"; }else if($result->vocation == 2){ echo 'Druid'; }else if($result->vocation == 3){ echo 'Paladin'; }else if($result->vocation == 4){ echo 'Knight'; }else if($result->vocation == 5){ echo 'Master Sorcerer'; }else if($result->vocation == 6){ echo 'Elder Druid'; }else if($result->vocation == 7){ echo 'Royal Paladin'; }else{ echo 'Elite Knight'; }?>
3 回答

呼喚遠(yuǎn)方
TA貢獻1856條經(jīng)驗 獲得超11個贊
三元不是你想要的好解決方案。它在您的代碼中是不可讀的,并且有更好的解決方案可用。
為什么不使用數(shù)組查找“map”或“dictionary”,如下所示:
$vocations = array( 1 => "Sorcerer", 2 => "Druid", 3 => "Paladin", ...);echo $vocations[$result->vocation];
這個應(yīng)用程序的三元組最終看起來像這樣:
echo($result->group_id == 1 ? "Player" : ($result->group_id == 2 ? "Gamemaster" : ($result->group_id == 3 ? "God" : "unknown")));
為什么這么糟糕?因為 - 作為單個長行,如果出現(xiàn)問題,你將得不到有效的調(diào)試信息,長度使得難以閱讀,加上多個三元組的嵌套只是感覺很奇怪。
標(biāo)準(zhǔn)三元版本簡單易讀,看起來像這樣:
$value = ($condition) ? 'Truthy Value' : 'Falsey Value';
要么
echo ($some_condition) ? 'The condition is true!' : 'The condition is false.';
三元組實際上只是編寫簡單if else
語句的一種方便/簡短的方法。以上樣本三元與以下相同:
if ($some_condition) { echo 'The condition is true!';} else { echo 'The condition is false!';}
然而,復(fù)雜邏輯的三元組很快變得難以理解,不再值得簡潔。
echo($result->group_id == 1 ? "Player" : ($result->group_id == 2 ? "Gamemaster" : ($result->group_id == 3 ? "God" : "unknown")));
即使有一些細(xì)心的格式將其分散到多行,也不是很清楚:
echo($result->group_id == 1 ? "Player" : ($result->group_id == 2 ? "Gamemaster" : ($result->group_id == 3 ? "God" : "unknown")));

達(dá)令說
TA貢獻1821條經(jīng)驗 獲得超6個贊
由于這是一項常見任務(wù),我建議在函數(shù)調(diào)用中包裝一個開關(guān)/案例。
function getVocationName($vocation){ switch($vocation){ case 1: return "Sorcerer"; break; case 2: return 'Druid'; break; case 3: return 'Paladin'; break; case 4: return 'Knight'; break; case 5: return 'Master Sorcerer'; break; case 6: return 'Elder Druid'; break; case 7: return 'Royal Paladin'; break; default: return 'Elite Knight'; break; }}echo getVocationName($result->vocation);

弒天下
TA貢獻1818條經(jīng)驗 獲得超8個贊
echo ($result ->vocation == 1) ? 'Sorcerer' : ($result->vocation == 2) ? 'Druid' : ($result->vocation == 3) ? 'Paladin' ....;
- 3 回答
- 0 關(guān)注
- 358 瀏覽
添加回答
舉報
0/150
提交
取消