如何编写PHP三元运算符

如何编写PHP三元运算符

如何使用elseif部分编写PHP三元运算符?


我看到的基本实施例if和else类似这样的PHP三元运算符的部分:


echo (true)  ? "yes" : "no";    //prints yes

echo (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';

  }

?>


富国沪深
浏览 334回答 3
3回答

呼唤远方

三元不是你想要的好解决方案。它在您的代码中是不可读的,并且有更好的解决方案可用。为什么不使用数组查找“map”或“dictionary”,如下所示:$vocations&nbsp;=&nbsp;array( &nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;=>&nbsp;"Sorcerer", &nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;=>&nbsp;"Druid", &nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;=>&nbsp;"Paladin", &nbsp;&nbsp;&nbsp;&nbsp;...);echo&nbsp;$vocations[$result->vocation];这个应用程序的三元组最终看起来像这样:echo($result->group_id&nbsp;==&nbsp;1&nbsp;?&nbsp;"Player"&nbsp;:&nbsp;($result->group_id&nbsp;==&nbsp;2&nbsp;?&nbsp;"Gamemaster"&nbsp;:&nbsp;($result->group_id&nbsp;==&nbsp;3&nbsp;?&nbsp;"God"&nbsp;:&nbsp;"unknown")));为什么这么糟糕?因为 - 作为单个长行,如果出现问题,你将得不到有效的调试信息,长度使得难以阅读,加上多个三元组的嵌套只是感觉很奇怪。标准三元版本简单易读,看起来像这样:$value&nbsp;=&nbsp;($condition)&nbsp;?&nbsp;'Truthy&nbsp;Value'&nbsp;:&nbsp;'Falsey&nbsp;Value';要么echo&nbsp;($some_condition)&nbsp;?&nbsp;'The&nbsp;condition&nbsp;is&nbsp;true!'&nbsp;:&nbsp;'The&nbsp;condition&nbsp;is&nbsp;false.';三元组实际上只是编写简单if else语句的一种方便/简短的方法。以上样本三元与以下相同:if&nbsp;($some_condition)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;'The&nbsp;condition&nbsp;is&nbsp;true!';}&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;'The&nbsp;condition&nbsp;is&nbsp;false!';}然而,复杂逻辑的三元组很快变得难以理解,不再值得简洁。echo($result->group_id&nbsp;==&nbsp;1&nbsp;?&nbsp;"Player"&nbsp;:&nbsp;($result->group_id&nbsp;==&nbsp;2&nbsp;?&nbsp;"Gamemaster"&nbsp;:&nbsp;($result->group_id&nbsp;==&nbsp;3&nbsp;?&nbsp;"God"&nbsp;:&nbsp;"unknown")));即使有一些细心的格式将其分散到多行,也不是很清楚:echo($result->group_id&nbsp;==&nbsp;1&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;?&nbsp;"Player"&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;($result->group_id&nbsp;==&nbsp;2&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;?&nbsp;"Gamemaster"&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;($result->group_id&nbsp;==&nbsp;3&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;?&nbsp;"God"&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;"unknown")));

达令说

由于这是一项常见任务,我建议在函数调用中包装一个开关/案例。function&nbsp;getVocationName($vocation){ &nbsp;&nbsp;&nbsp;&nbsp;switch($vocation){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;1:&nbsp;return&nbsp;"Sorcerer";&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;2:&nbsp;return&nbsp;'Druid';&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;3:&nbsp;return&nbsp;'Paladin';&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;4:&nbsp;return&nbsp;'Knight';&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;5:&nbsp;return&nbsp;'Master&nbsp;Sorcerer';&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;6:&nbsp;return&nbsp;'Elder&nbsp;Druid';&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;7:&nbsp;return&nbsp;'Royal&nbsp;Paladin';&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:&nbsp;return&nbsp;'Elite&nbsp;Knight';&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;}}echo&nbsp;getVocationName($result->vocation);

弑天下

echo&nbsp;($result&nbsp;->vocation&nbsp;==&nbsp;1)&nbsp;?&nbsp;'Sorcerer' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;($result->vocation&nbsp;==&nbsp;2)&nbsp;?&nbsp;'Druid' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;($result->vocation&nbsp;==&nbsp;3)&nbsp;?&nbsp;'Paladin' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;....;
打开App,查看更多内容
随时随地看视频慕课网APP