🎯 Strutture Condizionali: L'Istruzione SWITCH
L'istruzione switch è un'alternativa più pulita ed efficiente per sostituire lunghe catene di **if...elseif...else** quando si deve confrontare una singola variabile con **molti possibili valori** discreti.
1. La Sintassi Base: switch, case e break
Il funzionamento è il seguente: PHP valuta l'espressione passata a switch e la confronta, una alla volta, con i valori specificati in ciascun blocco case.
-
switch (espressione): L'espressione o variabile da valutare. -
case valore:: Il blocco di codice eseguito se l'espressione corrisponde a quel valore. -
break;: **Fondamentale!** Dice a PHP di uscire immediatamente dallo switch. Se omesso, l'esecuzione **continua** al bloccocasesuccessivo (fenomeno chiamato "fall-through").
<?php$giorno_settimana = 3;switch ($giorno_settimana) {case 1:echo "Lunedì";break;case 2:echo "Martedì";break;case 3:echo "Mercoledì";break;// Questo break ferma l'esecuzione!case 4:echo "Giovedì";// ... e così via ...break;}// Output: Mercoledì?>
2. Il Caso di Sostituzione: default
Se nessuno dei valori case corrisponde all'espressione, possiamo definire un blocco di codice da eseguire utilizzando la parola chiave default. Equivale all'istruzione else di un blocco if.
<?php$semaforo = "viola";switch ($semaforo) {case "rosso":echo "Stop!";break;case "verde":echo "Vai!";break;default:// Eseguito se $semaforo non è né "rosso" né "verde"echo "Attenzione: Colore non valido!";break;}// Output: Attenzione: Colore non valido!?>
3. Attenzione al break (Fall-Through)
L'omissione di break è un errore comune ma a volte può essere usato intenzionalmente per eseguire il codice di più case.
<?php$livello_utente = "Admin";switch ($livello_utente) {case "SuperAdmin":// Se è SuperAdmin, eredita anche i permessi di Admincase "Admin":// Inizia qui se $livello_utente è "Admin" o arriva da "SuperAdmin"echo "Hai permessi di scrittura e cancellazione.";break;case "Utente":echo "Hai permessi di sola lettura.";break;}?>