【问题标题】:inline elseif in PHPPHP中的内联elseif
【发布时间】:2012-05-22 10:15:31
【问题描述】:

有没有办法在 PHP 中使用内联 if 语句,其中还包含 elseif?

我会假设逻辑会是这样的:

$unparsedCalculation = ($calculation > 0) ? "<span style=\"color: #9FE076;\">".$calculation : ($calculation < 0) ? "<span style=\"color: #FF736A;\">".$calculation : $calculation;

【问题讨论】:

  • 这很难读。这将是未来维护的噩梦。
  • 您是否尝试过您发布的代码?它奏效了吗?如果没有,您观察到什么错误/错误行为?
  • Touche,Radu - 我同意。这只是我可以在我的代码中轻松找到的第一个 elseif 语句。

标签: php


【解决方案1】:

elseif 只不过是else if,所以实际上没有没有elseif,只是为了方便。三元运算符没有提供同样的便利,因为三元运算符旨在用于非常短的逻辑。

if ($a) { ... } elseif ($b) { ... } else { ... }

等同于

if ($a) { ... } else { if ($b) { ... } else { ... } }

因此,三元等价物是

$a ? ( ... ) : ( $b ? ( ... ) : ( ... ) )

【讨论】:

【解决方案2】:

你可以使用嵌套的三元运算符

      (IF ? THEN : ELSE) 
      (IF ? THEN : ELSE(IF ? THEN : ELSE(IF ? THEN : ELSE))

为了更好的可读性编码标准可以找到here

【讨论】:

    【解决方案3】:

    您需要将其中的一些内容括在括号中以解决操作顺序问题,但可以肯定的是,您可以这样做。虽然三元运算符没有“elseif”,但实际上是一回事

    if (condition) ? (true) : (false&gt; if (condition) ? (true) : (false));

    虽然你真的不应该这样编码......从可读性的角度来看,它会令人困惑。没有人会看到它并“甜蜜,忍者!”他们会说“呃,wtf”

    【讨论】:

      【解决方案4】:

      试试这个,

      (($condition_1) ? "output_1" : (($condition_2) ?  "output_2" : "output_3"));
      

      你的情况是:

      $unparsedCalculation = (($calculation > 0) ? "<span style=\"color: #9FE076;\">".$calculation : (($calculation < 0) ?  "<span style=\"color: #FF736A;\">".$calculation : $calculation));
      

      【讨论】:

        猜你喜欢
        • 2018-04-20
        • 2012-02-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-09
        • 1970-01-01
        • 2019-01-23
        • 1970-01-01
        相关资源
        最近更新 更多