【问题标题】:How to convert if statement to ternary operator?如何将 if 语句转换为三元运算符?
【发布时间】:2016-10-16 19:23:03
【问题描述】:

我正在尝试将 if 语句转换为三元运算符

这是我的代码:

if($today >= $visa_expiry) {
     echo "style='background-color : red; font-weight: bold; color: white; font-size: 13'";
}

if($today <= $visa_expiry) {
     echo "style='background-color : yellow; font-weight: bold; color: white; font-size: 13'";
}

if($today == $visa_expiry) {
     echo "style='background-color : green; font-weight: bold; color: white; font-size: 13'";
}

转三元运算符

有人可以帮助我吗?谢谢

注意:我的 if 语句只是一个例子

【问题讨论】:

  • 您确定以上内容正确吗?如果$visa_expiry 将是$today,它将执行所有三个echoes。
  • 你不应该,应该是 if\else if\else
  • @TeKo 只是一个例子对不起我会编辑我的帖子
  • 是的。如果您已经对语法结构感到不知所措,请不要选择最不可读的结构。此外,不应该使用内联样式,而是使用 CSS 类。

标签: php ternary-operator


【解决方案1】:

一种可能的解决方法是在前面的三元返回 false 时使用另一个三元:

<?php
$today = 5;
$expiry = 7;
$visaexpiry = ($today < $expiry ? 'yellow': ($today ==$expiry? 'green': ($today>$expiry? 'red': 'nothing')));
echo $visaexpiry;

?>

【讨论】:

    【解决方案2】:

    我真的不明白你为什么要在这里使用三元组。正如其他人所提到的,这应该是if/else if/else。此外,在您的示例中,可以同时满足所有三个条件。

    无论如何,这里有一个用三元运算符表达这一点的可能方式的简化示例:

    $bg = "green"; // default, assuming $today == $visa_expiry
    $bg = $today > $visa_expiry ? "red" : $bg;
    $bg = $today < $visa_expiry ? "yellow" : $bg;
    

    请注意,此评估这两个条件,即使不满足任何条件,并将$bg 变量分配给自身,最多两次。不好,但一个可行的解决方案。

    Mawia HL 已经展示了如何使用嵌套三元运算符来解决这个问题

    【讨论】:

      猜你喜欢
      • 2018-10-25
      • 2021-07-09
      • 1970-01-01
      • 2012-02-12
      • 2019-10-13
      • 1970-01-01
      • 1970-01-01
      • 2017-05-30
      • 2018-12-26
      相关资源
      最近更新 更多