6

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

这是我的原始代码:

if ($type = "recent") {
    $OrderType = "sid DESC";
} elseif ($type = "pop") {
    $OrderType = "counter DESC";
} else {
    $OrderType = "RAND()";
}

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

$OrderType = ($type = "recent") ? "sid DESC" : "counter DESC" ;

这是我尝试过的代码,但不知道如何向其中添加“<code>elseif 部分”。

4

2 回答 2

14

这称为三元运算符;-)

您可以使用其中两个:

$OrderType = ($type == 'recent' ? 'sid DESC' : ($type == 'pop' ? 'counter DESC' : 'RAND()'))

这可以读作:

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


几点注意事项:

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


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

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

于 2010-04-24T16:01:29.057 回答
3

我建议改用 case 语句。当您想要添加额外选项时,它使其更具可读性但更易于维护

switch ($type)
{
case "recent":
  $OrderType =  "sid DESC"; 
  break;
case "pop":
  $OrderType =  "counter DESC"; 
  break;
default:
   $OrderType =  "RAND()"; 
} 
于 2010-04-24T16:12:23.073 回答