如何用elseif部分编写PHP三元运算符?
我看到了带有PHP三元运算符if
和的基本示例,else
如下所示:
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';
}
?>
三元不是您想要的一个很好的解决方案。它不会在您的代码中可读,并且有很多更好的解决方案可用。
为什么不使用数组查找“ 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")));
在Kotlin中,这个表达式的等价物是什么? 这不是Kotlin中的有效代码。
问题内容: 我有以下代码 从2.2开始,我收到了折旧警告,有什么想法可以解决此问题? 我有这个解决方案: 但这不是很好。 问题答案: 怎么样: 看来您可能正在执行类似时钟算术的操作。如果是这样,那么可以更好地理解这一点:
问题内容: 根据此页面上的示例,我有以下工作示例和非工作示例。 工作代码使用语句: 使用三元运算符的非工作代码: 更新 在Brian提出技巧之后,我发现echo 输出了预期的结果。下面的作品很有魅力! 问题答案: 的 语法不是“ if的简写”运算符(称为条件运算符),因为您无法以与执行以下操作相同的方式执行代码: 在您的示例中,您在不为空时执行语句。使用条件运算符不能以相同的方式进行操作。但是,您
问题内容: 我大量使用三元运算符,但似乎无法在内部相互堆叠多个三元运算符。 我知道堆叠多个三元运算符 会使代码的可读性降低, 但在某些情况下,我想这样做。 到目前为止,这是我尝试过的: 正确的语法是什么? 问题答案: 这些括号是我认为能带给您的。 尝试
问题内容: 有人可以解释PHP中的三元运算符速记()和空合并运算符()之间的区别吗? 它们什么时候表现不同,什么时候以相同的方式表现(如果甚至发生)? VS。 问题答案: 当您的第一个参数为null时,它们基本相同,不同之处在于,当您有未定义的变量时,null合并不会输出。在PHP7.0迁移的文档有这样一段话: 对于需要将三元数与isset()结合使用的常见情况,已将空合并运算符(??)添加为语法
模板可以支持三元运算符,如: {$status?'发布':'下线'} {$vo.status?'发布':'下线'} {$vo['status']?'发布':'下线'} 支持条件判断表达式: {$a==$b ? 'yes' : 'no'} 条件运算符可以是==、===、!=、!==、>=、<=