Un ternario non è una buona soluzione per quello che vuoi. Non sarà leggibile nel tuo codice e ci sono soluzioni molto migliori disponibili.
Perché non utilizzare una ricerca di matrice "mappa" o "dizionario", in questo modo:
$vocations = array(
1 => "Sorcerer",
2 => "Druid",
3 => "Paladin",
...
);
echo $vocations[$result->vocation];
A ternaria per questa applicazione potrebbe finire per assomigliare a questo:
echo($result->group_id == 1 ? "Player" : ($result->group_id == 2 ? "Gamemaster" : ($result->group_id == 3 ? "God" : "unknown")));
Perché è questo cattivo? Perché - come una singola linea lunga, non si otterrebbero informazioni di debug valide se qualcosa dovesse andare storto qui, la lunghezza rende difficile la lettura, in più l'annidamento dei molteplici ternari sembra strano.
A Standard Ternario è semplice, facile da leggere, e sarebbe simile a questa:
$value = ($condition) ? 'Truthy Value' : 'Falsey Value';
o
echo ($some_condition) ? 'The condition is true!' : 'The condition is false.';
Un ternario è in realtà solo un/modo conveniente più breve per scrivere un semplice dichiarazione if else
. Il ternario esempio sopra riportato è lo stesso:
if ($some_condition) {
echo 'The condition is true!';
} else {
echo 'The condition is false!';
}
Tuttavia, un ternario per una logica complessa diventa rapidamente illeggibile, e non più vale la brevità.
echo($result->group_id == 1 ? "Player" : ($result->group_id == 2 ? "Gamemaster" : ($result->group_id == 3 ? "God" : "unknown")));
Anche con un po 'di formattazione attento alle distese su più righe, non è molto chiaro:
echo($result->group_id == 1
? "Player"
: ($result->group_id == 2
? "Gamemaster"
: ($result->group_id == 3
? "God"
: "unknown")));
Sarebbe meglio usare un interruttore o, ancora meglio, una mappa di ricerca di array. Un ternario per definizione è se-allora-altro. Scrivere un ternario per provare e fare ciò che vuoi sarebbe molto difficile da leggere/seguire. –
@ cale_b Potrebbe chiarire un po '? Sto ancora imparando PHP e nel mio lavoro ho usato solo istruzioni if-else-else, quindi non sono così familiare con tutte queste cose. – dinomuharemagic
Ho dato un esempio qui sotto. Se non hai intenzione di utilizzare un database, questa soluzione è chiara e facile da capire. –