Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中使用三元运算符代替if-else_Php_Ternary Operator - Fatal编程技术网

如何在PHP中使用三元运算符代替if-else

如何在PHP中使用三元运算符代替if-else,php,ternary-operator,Php,Ternary Operator,我试图用三元运算符来缩短代码 这是我的原始代码: if ($type = "recent") { $OrderType = "sid DESC"; } elseif ($type = "pop") { $OrderType = "counter DESC"; } else { $OrderType = "RAND()"; } 如何在代码中使用三元运算符而不是ifs/elses $OrderType = ($type = "recent") ? "sid DESC" :

我试图用三元运算符来缩短代码

这是我的原始代码:

if ($type = "recent") {
    $OrderType = "sid DESC";
} elseif ($type = "pop") {
    $OrderType = "counter DESC";
} else {
    $OrderType = "RAND()";
}
如何在代码中使用三元运算符而不是
if
s/
else
s

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

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

这称为三元运算符

您可以使用其中两种:

$OrderType = ($type == 'recent' ? 'sid DESC' : ($type == 'pop' ? 'counter DESC' : 'RAND()'))
这可以理解为:

  • 如果
    $type
    “最近的”
  • 然后使用
    'sid DESC'
  • 否则
    • 如果
      $type
      'pop'
    • 然后使用“计数器描述”
    • 否则请使用“RAND()”

几点注意:

  • 您必须使用
    ==
    ===
    ;而不是
    =
    • 前两个是
    • 最后一个是
  • 最好使用
    ()
    ,使内容更易于阅读
    • 你不应该使用太多这样的三元运算符:我认为这会让代码有点难以理解

作为三元运算符的参考,引用:

第三类是三元结构 操作员:
?:

应该使用它 在两个表达式之间进行选择 取决于第三个,而不是 选择两个句子或两条道路 执行
周围三元 带括号的表达式是一个非常复杂的问题 好主意


我建议用案例陈述来代替。当您想添加额外的选项时,它使它更具可读性,但更易于维护

switch ($type)
{
case "recent":
  $OrderType =  "sid DESC"; 
  break;
case "pop":
  $OrderType =  "counter DESC"; 
  break;
default:
   $OrderType =  "RAND()"; 
} 

你不需要修改你的代码,它可读性很好。这个问题可能是关于三元运算符的,但我同意,在这种情况下,switch更有意义;我喜欢三元运算符,但有时它们并不适合使用。