PHP Elseif三元运算符

时间:2012-10-31 16:07:50

标签: php

我正在尝试将以下代码转换为三元运算符,但它不起作用,我不确定为什么。我认为我的问题是我不知道如何以三元格式表达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">' : '';

3 个答案:

答案 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)

太晚可能会分享一些观点,但不过:)

  1. 使用if - else if - else进行有限数量的评估。我个人更喜欢使用if - else if - else当比较次数小于5时。
  2. 使用评估数量更多的switch-case。我个人更喜欢案例超过5的案例。
  3. 在考虑单个比较的情况下使用三元组(或循环时的单个比较),或者在交换机结构的“case”子句中需要if-else比较时。
  4. 在循环使用非常大的数据集时,使用三元组会更快。
  5. 恕我直言最终开发人员决定代码可读性和性能之间的权衡等式,而这反过来决定了什么,三元对比if else-if else与switch-case,可以在任何特定情况下使用。