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: BL'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: WeekendQui "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
- PHP
switchstatement — la struttura completa in cui vivecase. switch— riferimento alla parola chiaveswitch.- PHP
if...else...elseif— quando una catena di condizioni è più leggibile di unoswitch. - PHP operators — la differenza tra il confronto
==(non rigoroso) e===(rigoroso).