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 break serve 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:

Copertina: 50 Algoritmi per imparare PHP
📚 Consigliato per te

50 Algoritmi per imparare PHP

Una guida step by step per imparare PHP con esercizi svolti.

Vedi su Amazon
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

Aspettoif...elseif...elseswitch
Numero di valoriBuono per condizioni complesseOttimo per confronti di uno stesso valore
Tipi di confrontoPuò usare operatori (>, <, >=, ecc.)Confronta solo uguaglianza (==)
LeggibilitàPuò diventare lungo con molti elseifPiù chiaro con molti casi

6. Esercizi consigliati

  1. Stampare il nome del mese in base al numero (1 → gennaio, 2 → febbraio, …).
  2. Stampare un messaggio diverso per ogni fascia di voto: 10 → eccellente, 9 → molto buono, …
  3. Controllare se un giorno è feriale o weekend usando più valori nello stesso case.
  4. Stampare la stagione in base al mese (dicembre/febbraio → inverno, …).
  5. Creare un mini-menu: scegliere un’opzione numerica e stampare il risultato corrispondente.