有没有办法在 PHP 中使用内联 if 语句,其中还包括 elseif?
我会假设逻辑会是这样的:
$unparsedCalculation = ($calculation > 0) ? "<span style=\"color: #9FE076;\">".$calculation : ($calculation < 0) ? "<span style=\"color: #FF736A;\">".$calculation : $calculation;
有没有办法在 PHP 中使用内联 if 语句,其中还包括 elseif?
我会假设逻辑会是这样的:
$unparsedCalculation = ($calculation > 0) ? "<span style=\"color: #9FE076;\">".$calculation : ($calculation < 0) ? "<span style=\"color: #FF736A;\">".$calculation : $calculation;
elseif
无非是,else if
所以,实际上,没有,这只是一种方便。三元运算符没有提供同样的便利,因为三元运算符旨在用于非常短的逻辑。elseif
if ($a) { ... } elseif ($b) { ... } else { ... }
等同于
if ($a) { ... } else { if ($b) { ... } else { ... } }
因此,三元等价物是
$a ? ( ... ) : ( $b ? ( ... ) : ( ... ) )
您可以使用嵌套的三元运算符
(IF ? THEN : ELSE)
(IF ? THEN : ELSE(IF ? THEN : ELSE(IF ? THEN : ELSE))
为了更好的可读性编码标准可以在这里找到
您需要将其中的一些包含在括号中以解决操作顺序问题,但可以肯定的是,您可以这样做。虽然三元运算符没有“elseif”,但实际上是一回事
if (condition) ? (true) : (false> if (condition) ? (true) : (false));
虽然你真的不应该这样编码......从可读性的角度来看它是令人困惑的。没有人会看到它并“甜蜜,忍者!” 他们会说“呃,wtf”
试试这个,
(($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));