Я пытаюсь сократить свой код с помощью тернарного оператора.
Это - мой исходный код:
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'
'counter DESC'
'RAND ()'
Пара примечаний:
==
или ===
; а не =
()
, чтобы вещи легче читать
И в качестве справки о тернарный оператор, цитируемый из раздела Операторы руководства PHP :
Третья группа - это тернарный оператор :
?:
.
Его следует использовать для выбора между двумя выражениями в зависимости от третьего, а не для выбора двух предложений или путей выполнения .
Заключение троичных выражений в круглые скобки - очень хорошая идея.
Я бы предложил вместо этого использовать оператор case. это делает его немного более читаемым, но более удобным в обслуживании, когда вы хотите добавить дополнительные параметры
switch ($type)
{
case "recent":
$OrderType = "sid DESC";
break;
case "pop":
$OrderType = "counter DESC";
break;
default:
$OrderType = "RAND()";
}