Тернар не является хорошим решением для вас. Это не будет читаемо в вашем коде, и есть много лучших решений.
Почему бы не использовать поиск массива «карты» или «словарь», например, так:
$vocations = array(
1 => "Sorcerer",
2 => "Druid",
3 => "Paladin",
...
);
echo $vocations[$result->vocation];
Тернарная для этого приложения будет в конечном итоге выглядит так:
echo($result->group_id == 1 ? "Player" : ($result->group_id == 2 ? "Gamemaster" : ($result->group_id == 3 ? "God" : "unknown")));
Почему это Плохо? Потому что - как одна длинная строка, вы не получите достоверной отладочной информации, если что-то должно было пойти не так, длина затрудняет чтение, плюс вложение нескольких тернариев просто странно.
Стандартная троичной просто, легко читать, и будет выглядеть следующим образом:
$value = ($condition) ? 'Truthy Value' : 'Falsey Value';
или
echo ($some_condition) ? 'The condition is true!' : 'The condition is false.';
Тройная действительно просто удобный/короткий способ написать простой if else
заявление. Приведенный выше пример тройной такое же, как:
if ($some_condition) {
echo 'The condition is true!';
} else {
echo 'The condition is false!';
}
Однако тройной для сложной логики быстро становится нечитаемым, и больше не стоит краткости.
echo($result->group_id == 1 ? "Player" : ($result->group_id == 2 ? "Gamemaster" : ($result->group_id == 3 ? "God" : "unknown")));
Даже с некоторыми внимательными форматирование, чтобы распространить его на несколько строк, это не очень понятно:
echo($result->group_id == 1
? "Player"
: ($result->group_id == 2
? "Gamemaster"
: ($result->group_id == 3
? "God"
: "unknown")));
Вам было бы лучше использовать коммутатор или даже лучшую карту поиска массива. По определению это тройной вариант if-then-else. Писать тройной, чтобы попытаться сделать то, что вы хотите, было бы очень трудно читать/следовать. –
@cale_b Не могли бы вы прояснить это немного? Я все еще изучаю PHP, и в своей работе я использовал только инструкции if-elseif-else, поэтому я не так хорошо знаком со всеми этими вещами. – dinomuharemagic
Я привел пример ниже. Если вы не собираетесь использовать базу данных, это решение будет чистым и понятным. –