Как использовать тернарный оператор вместо if-else в PHP

Я пытаюсь сократить свой код с помощью тернарного оператора.

Это мой оригинальный код:

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 ».

Related of "Как использовать тернарный оператор вместо if-else в PHP"

Это называется тернарным оператором 😉

Вы можете использовать два из них:

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

Это можно прочитать так:

  • если $type является 'recent'
  • затем используйте 'sid DESC'
  • еще
    • если $type'pop'
    • затем используйте 'counter DESC'
    • иначе используйте 'RAND()'

Несколько примечаний:

  • Вы должны использовать == или === ; и не =
    • Первые два являются операторами сравнения
    • Последний – оператор присваивания
  • Лучше всего использовать () , чтобы упростить чтение
    • И вы не должны использовать слишком много тернарных операторов: это делает код немного трудным для понимания, я думаю

И, как ссылка на тернарный оператор, цитируя раздел « Операторы » руководства PHP :

Третья группа – тернарный оператор: ?: .
Он должен использоваться для выбора между двумя выражениями в зависимости от третьего, а не для выбора двух предложений или путей выполнения.
Ближайшие тернарные выражения с круглыми скобками – очень хорошая идея.

Вместо этого я бы предложил использовать аргумент case. это делает его более читаемым, но более удобным для обслуживания, когда вы хотите добавить дополнительные параметры

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