6

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

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

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

4 回答 4

21

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

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

等同于

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

因此,三元等价物是

$a ? ( ... ) : ( $b ? ( ... ) : ( ... ) )
于 2012-05-14T22:01:38.613 回答
2

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

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

为了更好的可读性编码标准可以在这里找到

于 2012-05-14T22:04:01.713 回答
1

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

if (condition) ? (true) : (false> if (condition) ? (true) : (false));

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

于 2012-05-14T22:04:51.433 回答
0

试试这个,

(($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-20T13:57:45.110 回答