Lezioni di PHP - Lezione 8-2 - L’operatore switch
Nella lezione precedente abbiamo imparato a usare l’istruzione if. L’istruzione if ci permette di verificare se una condizione è vera e, a seconda del risultato, eseguire le azioni necessarie.
Ora immaginiamo di dover eseguire dieci verifiche diverse e, a seconda del risultato, eseguire dieci diverse azioni. Certo, possiamo scriverlo con una serie di if:
<?php if($x == 1){ // azione } if($x == 2){ // azione } if($x == 3){ // azione } if($x == 4){ // azione } if($x == 5){ // azione } if($x == 6){ // azione } if($x == 7){ // azione } if($x == 8){ // azione } if($x == 9){ // azione } if($x == 10){ // azione } ?>
Questo metodo funziona, ma è molto più comodo scrivere controlli multipli usando l’operatore switch.
PHP switch
L’operatore switch permette di confrontare un valore con molti casi possibili. Riscriviamo l’esempio precedente usando switch:
<?php switch ($x){ case 1: // azione break; case 2: // azione break; case 3: // azione break; case 4: // azione break; case 5: // azione break; case 6: // azione break; case 7: // azione break; case 8: // azione break; case 9: // azione break; case 10: // azione break; default: // azione se nessun altro caso corrisponde } ?>
Come puoi vedere, entrambi i metodi funzionano allo stesso modo. Tuttavia, con switch abbiamo anche la possibilità di aggiungere default, che viene eseguito se nessuno dei case precedenti corrisponde (cioè se $x
non è compreso tra 1 e 10).
Vediamo ora com’è strutturato lo switch. Per prima cosa scriviamo la parola chiave switch
, seguita tra parentesi tonde dal valore o espressione da verificare. Può essere sia un numero che una stringa, ad esempio:
<?php switch ($x){ case 'Hello': break; case 'Bye': break; } ?>
Dopo l’espressione da controllare apriamo le parentesi graffe. All’interno scriviamo i possibili case e le relative azioni da eseguire:
<?php switch ($x){ case 'Hello': // valore possibile print $x; // azione break; // fine del caso case 2: $x++; break; } ?>
Ogni case specifica un valore possibile. Se il valore di $x
corrisponde a quello indicato, viene eseguito il blocco di istruzioni associato fino a trovare break;
, che interrompe l’esecuzione dello switch. Se dimentichi di inserire break;
, l’esecuzione continuerà anche nei casi successivi.
Alla fine puoi inserire default, che verrà eseguito se nessun altro case è stato verificato come vero. Quindi, ricorda due regole fondamentali:
- Non dimenticare di mettere
break;
alla fine di ogni caso. - Nel blocco
default
ilbreak;
è facoltativo, poiché è sempre l’ultimo.
Ecco uno schema a blocchi del funzionamento di switch:
Per esempio, possiamo usare switch per determinare il giorno della settimana in base al numero di giorni trascorsi da un lunedì:
<?php // $D è il numero di giorni trascorsi dal lunedì $x = $D % 7; switch ($x){ case 1: print 'lunedì'; break; case 2: print 'martedì'; break; case 3: print 'mercoledì'; break; case 4: print 'giovedì'; break; case 5: print 'venerdì'; break; case 6: print 'sabato'; break; case 7: print 'domenica'; break; } ?>