PHP Elseif三元运算符

Jon*_*Jon 21 php

我试图将以下代码转换为三元运算符,但它不起作用,我不确定为什么.我认为我的问题是我不知道如何以elseif三元格式表达操作.从我的理解和使用格式elseifif操作执行相同的方式: (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">' : '';
Run Code Online (Sandbox Code Playgroud)

Sam*_*ook 50

$top = ($i == 0) ? '<div class="active item">' : (($i % 5 == 0) ? '<div class="item">' : '');
Run Code Online (Sandbox Code Playgroud)

你需要在整个else块周围添加括号


los*_*rse 14

三元运算符不支持真正的if... else if... else...操作; 但是,您可以使用以下技术模拟行为

var name = (variable === 1) ? 'foo' : ((variable === 2) ? 'bar' : 'baz');
Run Code Online (Sandbox Code Playgroud)

我个人并不关心这一点,因为我发现它不那么可读或优雅.我通常更喜欢这种switch说法.

switch (variable) {
    case 1 : name = 'foo'; break;
    case 2 : name = 'bar'; break;
    default : name = 'bas'; break;
}
Run Code Online (Sandbox Code Playgroud)


Bha*_*nik 5

可能已经太晚了,无法分享一些观点,但尽管如此:)

  1. 使用 if - else if - else 进行有限数量的计算。就我个人而言,当比较次数少于 5 次时,我更喜欢使用 if - else if - else 。
  2. 当评估次数较多时使用 switch-case。就我个人而言,我更喜欢 case 超过 5 个的 switch-case。
  3. 当考虑单个比较(或循环时的单个比较),或者当 switch 结构的“case”子句内需要 if-else 比较时,请使用三元。
  4. 在循环非常大的数据集时进行比较时,使用三元会更快。

恕我直言,最终由开发人员决定代码可读性和性能之间的权衡方程式,进而决定在任何特定情况下可以使用三元、if else-if else 或 switch-case 的内容。