如何编写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 回答
呼唤远方
TA贡献1856条经验 获得超11个赞
三元不是你想要的好解决方案。它在您的代码中是不可读的,并且有更好的解决方案可用。
为什么不使用数组查找“map”或“dictionary”,如下所示:
$vocations = array( 1 => "Sorcerer", 2 => "Druid", 3 => "Paladin", ...);echo $vocations[$result->vocation];
这个应用程序的三元组最终看起来像这样:
echo($result->group_id == 1 ? "Player" : ($result->group_id == 2 ? "Gamemaster" : ($result->group_id == 3 ? "God" : "unknown")));
为什么这么糟糕?因为 - 作为单个长行,如果出现问题,你将得不到有效的调试信息,长度使得难以阅读,加上多个三元组的嵌套只是感觉很奇怪。
标准三元版本简单易读,看起来像这样:
$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!';}
然而,复杂逻辑的三元组很快变得难以理解,不再值得简洁。
echo($result->group_id == 1 ? "Player" : ($result->group_id == 2 ? "Gamemaster" : ($result->group_id == 3 ? "God" : "unknown")));
即使有一些细心的格式将其分散到多行,也不是很清楚:
echo($result->group_id == 1 ? "Player" : ($result->group_id == 2 ? "Gamemaster" : ($result->group_id == 3 ? "God" : "unknown")));
达令说
TA贡献1821条经验 获得超6个赞
由于这是一项常见任务,我建议在函数调用中包装一个开关/案例。
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条经验 获得超8个赞
echo ($result ->vocation == 1) ? 'Sorcerer' : ($result->vocation == 2) ? 'Druid' : ($result->vocation == 3) ? 'Paladin' ....;
- 3 回答
- 0 关注
- 333 浏览
添加回答
举报
0/150
提交
取消