W3docs

case

Scopri come usare la parola chiave "case" nello statement "switch" di PHP, con sintassi, esempi pratici e confronto con if/elseif.

Come sviluppatore PHP, potresti aver utilizzato lo statement switch per gestire più condizioni nel codice. La parola chiave case è un componente fondamentale dello statement switch e consente di definire azioni specifiche da eseguire in base al valore di una variabile. Questa pagina illustra la sintassi di case, il funzionamento del fall-through e di break, la problematica del confronto non rigoroso, il pattern switch (true) per gli intervalli e la relazione tra case e le catene if/elseif.

Sintassi

La parola chiave "case" viene usata per definire un'azione specifica da eseguire in base al valore di una variabile all'interno di uno statement "switch". Di seguito è riportata la sintassi di base per l'utilizzo della parola chiave "case" in PHP:

La sintassi PHP di case

<?php

switch ($variable) {
  case $value1:
    // Code to execute if $variable equals $value1
    break;
  case $value2:
    // Code to execute if $variable equals $value2
    break;
  default:
    // Code to execute if $variable does not equal any of the specified values
}

In questo esempio, la parola chiave "case" viene usata per definire azioni specifiche in base al valore della variabile "$variable". Lo statement break è fondamentale: termina il blocco switch e impedisce il "fall-through" al caso successivo. Senza di esso, PHP continuerà a eseguire il codice nei casi successivi finché non incontra un break o la fine del blocco switch. Si noti inoltre che lo switch di PHP utilizza il confronto non rigoroso (==) per impostazione predefinita, il che significa che case 0 corrisponde anche a "0" o false. Se è richiesta una corrispondenza esatta del tipo, è necessario utilizzare la logica di confronto rigoroso.

Esempi

Vediamo alcuni esempi pratici di come la parola chiave "case" può essere utilizzata:

Esempio di case in PHP

<?php

// Example 1
$day = "Monday";

switch ($day) {
    case "Monday":
        echo "Today is Monday." . PHP_EOL;
        break;
    case "Tuesday":
        echo "Today is Tuesday.";
        break;
    case "Wednesday":
        echo "Today is Wednesday.";
        break;
    default:
        echo "Today is not Monday, Tuesday, or Wednesday.";
}

// Output: Today is Monday.

// Example 2
$grade = 85;

switch (true) {
    case $grade >= 90:
        echo "A";
        break;
    case $grade >= 80:
        echo "B";
        break;
    case $grade >= 70:
        echo "C";
        break;
    case $grade >= 60:
        echo "D";
        break;
    default:
        echo "F";
}

// Output: B

L'esempio 1 confronta direttamente un valore string. L'esempio 2 usa il pattern switch (true): ogni case contiene un'espressione boolean e viene eseguito il primo che restituisce true. Questo è il modo idiomatico per gestire gli intervalli in uno switch, poiché il semplice case confronta solo per uguaglianza.

Raggruppamento dei casi (fall-through intenzionale)

Poiché un case privo di break cade nel caso successivo, è possibile impilare le etichette per eseguire lo stesso blocco per più valori:

<?php

$day = "Sat";

switch ($day) {
    case "Sat":
    case "Sun":
        echo "Weekend";
        break;
    default:
        echo "Weekday";
}

// Output: Weekend

Qui "Sat" corrisponde alla prima etichetta, cade nel caso vuoto "Sun" e viene eseguito il blocco condiviso. Questa è l'unica situazione in cui omettere break è intenzionale anziché un errore.

Vantaggi

L'utilizzo della parola chiave "case" presenta diversi vantaggi, tra cui:

  • Codice semplificato: la parola chiave "case" consente di scrivere codice più breve e conciso, più facile da leggere e comprendere.
  • Maggiore leggibilità: lo statement "switch" offre una struttura più pulita rispetto a lunghe catene di statement "if/elseif" quando si confronta una singola variabile con più valori.
  • Maggiore flessibilità: la parola chiave "case" consente di definire azioni specifiche in base al valore di una variabile, rendendo il codice più adattabile a scenari diversi.

Conclusione

La parola chiave case consente di definire azioni specifiche in base al valore di una variabile all'interno di uno statement switch. Ricorda le due insidie più comuni: aggiungi break a ogni caso a meno che non intenda usare il fall-through, e presta attenzione al confronto non rigoroso quando si confrontano numeri con string.

Argomenti correlati

Pratica

Pratica
In PHP, quali dei seguenti sono tipi di switch per le strutture di controllo?
In PHP, quali dei seguenti sono tipi di switch per le strutture di controllo?
Was this page helpful?