Switch
Passiamo ora a verificare una seconda istruzione che ci permette di prevedere diversi valori possibili per un'espressione ed eseguire codice specifico in base al valore:switch () { case : break; case : break; .... default: ; break; }
switch
prevede che indichiamo, fra
parentesi, un'espressione che verrà valutata per il suo valore (questa
volta non si tratta necessariamente di un valore booleano). Di seguito,
tra parentesi graffe, esprimeremo una serie di espressioni da
confrontare con quella indicata prima: dal momento in cui ne trova una
il cui valore è uguale, PHP esegue il codice indicato di seguito, fino a
quando non incontra un'istruzione break
. Come possiamo vedere dall'esempio, le espressioni da confrontare con la prima vengono precedute dalla parola chiave case
e seguite dai due punti. L'istruzione default
può essere indicata come 'ultimo caso', che si considera verificato
quando nessuno dei casi precedenti è risultato vero. L'indicazione default
può anche essere assente.
È molto importante comprendere la funzione dell'istruzione
break
in questa situazione: infatti, quando PHP verifica uno dei casi, esegue
non solo il codice che trova subito dopo, ma anche tutto quello che
trova di seguito, compreso quello relativo ai casi seguenti. Questo fino
a quando non trova, appunto, un'istruzione break
. Se non mettessimo un'istruzione break
alla fine di un blocco di codice relativo ad un caso particolare,
l'esecuzione continuerebbe eseguendo anche il case successivo. Questo
comportamento ci permette però di prevedere un unico comportamento per
più valori dell'espressione sotto esame:
switch ($nome) { case 'Luca': case 'Giorgio': case 'Franco': print "Ciao, vecchio amico!"; break; case 'Mario': print "Ciao, Mario!"; break; case 'Paolo': print "Finalmente, Paolo!"; break; default: print "Benvenuto, chiunque tu sia"; }
$nome
valga 'Luca', 'Giorgio' o 'Franco'.
L'operatore ternario
L'operatore ternario è così chiamato perchè è formato da tre espressioni: il valore restituito è quello della seconda o della terza di queste espressioni, a seconda che la prima sia vera o falsa. In pratica, si può considerare, in certi casi, una maniera molto sintetica di effettuare unaif
.
($altezza >= 180) ? 'alto' : 'normale' ;
$altezza
è maggiore o uguale a 180, e 'normale' nel caso opposto. Come vediamo,
l'espressione condizionale è contenuta fra parentesi e seguita da un
punto interrogativo, mentre due punti separano la seconda espressione
dalla terza. Questo costrutto può essere utilizzato, ad esempio, per
valorizzare velocemente una variabile senza ricorrere all'if
:
$tipologia = ($altezza >= 180) ? 'alto' : 'normale';
if ($altezza >= 180) $tipologia = 'alto' ; else $tipologia = 'normale';
0 commenti:
Posta un commento
Proponi un'idea, segnalaci un problema.
Entra a far parte di CS3, pubblica i tuoi articoli.
Scrivi un commento!