case
Découvrez le mot-clé "case" en PHP : syntaxe, fall-through, break et comparaison souple dans l'instruction switch.
En tant que développeur PHP, vous avez peut-être déjà utilisé l'instruction switch pour gérer plusieurs conditions dans votre code. Le mot-clé case est un composant essentiel de l'instruction switch, vous permettant de définir des actions spécifiques à effectuer selon la valeur d'une variable. Cette page couvre la syntaxe de case, le fonctionnement du fall-through et de break, le piège de la comparaison souple, le motif switch (true) pour les plages de valeurs, et la relation entre case et les chaînes if/elseif.
Syntaxe
Le mot-clé case est utilisé pour définir une action spécifique à effectuer selon la valeur d'une variable dans une instruction switch. Voici la syntaxe de base pour utiliser le mot-clé case en PHP :
La syntaxe PHP de 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
}Dans cet exemple, le mot-clé case est utilisé pour définir des actions spécifiques à effectuer selon la valeur de la variable $variable. L'instruction break est cruciale : elle met fin au bloc switch et empêche le « fall-through » vers le case suivant. Sans elle, PHP continuera d'exécuter le code des cases suivants jusqu'à rencontrer un break ou la fin du bloc switch. De plus, notez que le switch PHP utilise la comparaison souple (==) par défaut, ce qui signifie que case 0 correspondra également à "0" ou false. Utilisez une logique de comparaison stricte si une correspondance de type exacte est requise.
Exemples
Voyons quelques exemples pratiques illustrant l'utilisation du mot-clé case :
Exemple de case 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'exemple 1 compare directement une valeur de type string. L'exemple 2 utilise le motif switch (true) : chaque case contient une expression booléenne, et le premier qui s'évalue à true est exécuté. C'est la manière idiomatique de gérer des plages de valeurs dans un switch, puisqu'un case ordinaire ne compare que l'égalité.
Regroupement de cases (fall-through intentionnel)
Comme un case sans break tombe dans le suivant, vous pouvez empiler des étiquettes pour exécuter le même bloc pour plusieurs valeurs :
<?php
$day = "Sat";
switch ($day) {
case "Sat":
case "Sun":
echo "Weekend";
break;
default:
echo "Weekday";
}
// Output: WeekendIci, "Sat" correspond à la première étiquette, tombe dans le case vide "Sun", et exécute le bloc partagé. C'est la seule situation où omettre break est délibéré plutôt qu'un bug.
Avantages
L'utilisation du mot-clé case présente plusieurs avantages, notamment :
- Code simplifié : le mot-clé
casevous permet d'écrire un code plus court et plus concis, plus facile à lire et à comprendre. - Lisibilité améliorée : l'instruction
switchoffre une structure plus claire que de longues chaînes d'instructionsif/elseiflorsqu'on compare une seule variable à plusieurs valeurs. - Flexibilité accrue : le mot-clé
casevous permet de définir des actions spécifiques selon la valeur d'une variable, rendant votre code plus adaptable à différents scénarios.
Conclusion
Le mot-clé case vous permet de définir des actions spécifiques en fonction de la valeur d'une variable à l'intérieur d'une instruction switch. N'oubliez pas les deux points qui piègent souvent les développeurs : ajoutez break à chaque case sauf si vous souhaitez un fall-through intentionnel, et méfiez-vous de la comparaison souple lors de la correspondance entre nombres et chaînes.
Sujets connexes
- L'instruction PHP
switch— la structure complète dans laquellecases'insère. switch— référence du mot-cléswitch.- PHP
if...else...elseif— quand une chaîne de conditions est plus lisible qu'unswitch. - Les opérateurs PHP — comment diffèrent la comparaison souple
==et la comparaison stricte===.