如何在PHP中使用三元运算符而不是if-else

Mac*_*lor 6 php ternary-operator

我正在尝试使用三元运算符来缩短代码.

这是我的原始代码:

if ($type = "recent") {
    $OrderType = "sid DESC";
} elseif ($type = "pop") {
    $OrderType = "counter DESC";
} else {
    $OrderType = "RAND()";
}
Run Code Online (Sandbox Code Playgroud)

如何在代码中使用三元运算符而不是ifs/elses?

$OrderType = ($type = "recent") ? "sid DESC" : "counter DESC" ;
Run Code Online (Sandbox Code Playgroud)

这是我尝试的代码,但不知道如何添加" elseif部分".

Pas*_*TIN 14

这被称为三元运算符 ;-)

你可以使用其中两个:

$OrderType = ($type == 'recent' ? 'sid DESC' : ($type == 'pop' ? 'counter DESC' : 'RAND()'))
Run Code Online (Sandbox Code Playgroud)

这可以理解为:

  • 如果$type是的话'recent'
  • 然后用 'sid DESC'
  • 其他
    • 如果$type是的话'pop'
    • 然后用 'counter DESC'
    • 否则使用 'RAND()'


几个笔记:

  • 你必须使用=====; 并不是=
  • 最好使用(),以使事情更容易阅读
    • 你不应该使用太多这样的三元运算符:我认为它使代码有点难以理解


并且,作为关于三元运算符的参考,引用PHP手册Operators部分:

第三组是三元运算符:?:.
它应该用于根据第三个表达式在两个表达式之间进行选择,而不是选择两个句子或执行路径.
周围带括号的三元表达式是一个非常好的主意.