我正在尝试将以下代码转换为三元运算符,但它不起作用,我不确定为什么。我认为我的问题是我不知道如何以三元格式表达elseif
操作。根据我的理解,使用格式elseif
执行if
与: (condition) ? 'result'
操作的方式相同。
if ($i == 0) {
$top = '<div class="active item">';
} elseif ($i % 5 == 0) {
$top = '<div class="item">';
} else {
$top = '';
}
$top = ($i == 0) ? '<div class="active item">' : ($i % 5 == 0) ? '<div class="item">' : '';
答案 0 :(得分:47)
$top = ($i == 0) ? '<div class="active item">' : (($i % 5 == 0) ? '<div class="item">' : '');
你需要在整个其他块
周围添加括号答案 1 :(得分:14)
三元运算符不支持真正的if... else if... else...
操作;但是,您可以使用以下技术模拟行为
var name = (variable === 1) ? 'foo' : ((variable === 2) ? 'bar' : 'baz');
我个人并不关心这一点,因为我发现它不那么可读或优雅。我通常更喜欢switch
声明。
switch (variable) {
case 1 : name = 'foo'; break;
case 2 : name = 'bar'; break;
default : name = 'bas'; break;
}
答案 2 :(得分:3)
太晚可能会分享一些观点,但不过:)
恕我直言最终开发人员决定代码可读性和性能之间的权衡等式,而这反过来决定了什么,三元对比if else-if else与switch-case,可以在任何特定情况下使用。