Il costrutto switch è un’alternativa agli if...elseif...else quando si devono confrontare più valori della stessa variabile.
1. Sintassi di base
switch (variabile) {
case valore1:
// codice da eseguire se variabile == valore1
break;
case valore2:
// codice da eseguire se variabile == valore2
break;
default:
// codice da eseguire se nessun case corrisponde
}
Note importanti:
- Il
breakserve a terminare il blocco del case; senza di esso, PHP continuerà a eseguire anche i case successivi (fall-through). - Il
defaultè opzionale, ma consigliato: viene eseguito se nessun case corrisponde.
2. Esempio pratico: Giorno della settimana
<?php
$giorno = "martedì";
switch ($giorno) {
case "lunedì":
echo "Oggi è lunedì, inizia la settimana.";
break;
case "martedì":
echo "Oggi è martedì, giornata produttiva.";
break;
case "mercoledì":
echo "Oggi è mercoledì, metà settimana!";
break;
default:
echo "Non è un giorno gestito dal programma.";
}
?>
Output:
Oggi è martedì, giornata produttiva.
3. Switch con numeri
<?php
$voto = 8;
switch ($voto) {
case 10:
echo "Eccellente";
break;
case 9:
echo "Molto buono";
break;
case 8:
echo "Buono";
break;
default:
echo "Voto non gestito";
}
?>
Output:

📚 Consigliato per te
Vedi su Amazon50 Algoritmi per imparare PHP
Una guida step by step per imparare PHP con esercizi svolti.
Buono
4. Switch con più valori nello stesso case
In PHP, puoi raggruppare più valori nello stesso case usando più case consecutivi senza break intermedi:
<?php
$giorno = "sabato";
switch ($giorno) {
case "sabato":
case "domenica":
echo "È weekend!";
break;
default:
echo "È un giorno feriale.";
}
?>
Output:
È weekend!
Spiegazione:
- Se
$giornoè"sabato"o"domenica", viene eseguito lo stesso blocco.
5. Differenze tra if e switch
| Aspetto | if...elseif...else | switch |
|---|---|---|
| Numero di valori | Buono per condizioni complesse | Ottimo per confronti di uno stesso valore |
| Tipi di confronto | Può usare operatori (>, <, >=, ecc.) | Confronta solo uguaglianza (==) |
| Leggibilità | Può diventare lungo con molti elseif | Più chiaro con molti casi |
6. Esercizi consigliati
- Stampare il nome del mese in base al numero (1 → gennaio, 2 → febbraio, …).
- Stampare un messaggio diverso per ogni fascia di voto: 10 → eccellente, 9 → molto buono, …
- Controllare se un giorno è feriale o weekend usando più valori nello stesso case.
- Stampare la stagione in base al mese (dicembre/febbraio → inverno, …).
- Creare un mini-menu: scegliere un’opzione numerica e stampare il risultato corrispondente.