6

三項演算子を使用してコードを短縮しようとしています。

これは私の元のコードです:

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

ifコードでs/ sの代わりに三項演算子を使用するにはどうすればよいelseですか?

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

これは私が試したコードですが、「<code>elseifpart」を追加する方法がわかりません。

4

2 に答える 2

14

これは三項演算子と呼ばれます;-)

あなたはそれらのうちの2つを使うことができます:

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

これは次のように読むことができます:

  • もしそう$typeなら'recent'
  • 次に使用します'sid DESC'
  • そうしないと
    • もしそう$typeなら'pop'
    • 次に使用します'counter DESC'
    • それ以外の場合は使用'RAND()'


いくつかのメモ:

  • ==またはを使用する必要があります===; ではなく=
  • ()読みやすくするために、を 使用することをお勧めします
    • そして、そのような三項演算子をあまり多く使用するべきではありません。コードを理解するのが少し難しくなると思います。


そして、三項演算子に関するリファレンスとして、PHPマニュアルの演算子セクションを引用します。

3番目のグループは三項演算子です:?:
2つの文や実行パスを選択するのではなく、3番目の式に応じて2つの式から選択するために使用する必要があります。
三元式を括弧で囲むことは非常に良い考えです。

于 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 に答える