CASE |
Cas |
---|---|
PHP 4.0+ |
Syntaxe
switch (expression) { case label : statementlist case label : statementlist ... default : statementlistelse } |
Paramètres
Nom | Description |
---|---|
expression | Ce paramètre permet d'indiquer l'expression à évaluer |
label | Ce paramètre permet d'indiquer une valeur à évaluer |
statementlist | Ce paramètre permet d'indiquer l'instruction exécuté si la valeur correspond |
statementlistelse | Ce paramètre permet d'indiquer l'instruction exécuté si aucune valeur ne correspond |
Description
Ce mot réservé permet d'identifier un cas dans un mot réservé «switch».
Remarques
- Utilisation dans les structures switch : Le mot-clef case est utilisé pour définir des branches dans une structure switch. Chaque case représente une condition à tester pour une valeur donnée. Si la valeur correspond à celle spécifiée par le case, le bloc associé est exécuté.
- Comportement sans le mot-clef break : Si un break n'est pas ajouté après un bloc case, l'exécution continue dans les cases suivants, même si les valeurs ne correspondent pas. Ce comportement, appelé fall-through, peut être intentionnel dans certains cas, mais il peut également entraîner des erreurs si omis par inadvertance.
- Prise en charge des types de comparaison : Les comparaisons effectuées dans les blocs case utilisent l'opérateur == (égalité) par défaut. Cela signifie que les types sont convertis de manière implicite (comparaison lâche). Pour une comparaison stricte, il faut utiliser des alternatives comme des blocs if.
- Cas par défaut avec default : Le mot-clef default est utilisé pour gérer les cas où aucune correspondance n'est trouvée parmi les blocs case. Il agit comme une clause "else" pour un switch.
- Compatibilité avec les expressions scalaires : Les valeurs des blocs case doivent être des expressions scalaires (entiers, chaînes de caractères,...) ou des constantes. Les tableaux et les objets ne sont pas autorisés comme valeurs dans un case, car ils ne peuvent pas être comparés avec une égalité simple.
- Organisation et lisibilité : L'utilisation de case dans un switch permet d'améliorer la lisibilité et l'organisation du code, en particulier lorsqu'il s'agit de tester plusieurs valeurs pour une même variable. Comparé à une longue série de blocs if-else, un switch structuré avec des case est généralement plus clair et concis.
- Support des chaînes de caractères et des entiers : Les blocs case en PHP ne se limitent pas aux nombres; ils prennent également en charge les chaînes de caractères. Cela est utile dans les situations où des choix doivent être faits en fonction d'une valeur textuelle.
- Performance des structures switch-case : Les switch-case peuvent être plus performants que des séries de blocs if-else dans certains cas, car ils permettent une évaluation optimisée des valeurs. Toutefois, leur efficacité dépend du nombre de blocs case et de la complexité des comparaisons.
Exemple
Cet exemple permet d'effectuer une simple évaluation d'un caractère hexadécimal et de retourner sa valeur décimal correspondante :
- <?php
- function CharHexToNumber($value) {
- switch($value) {
- case '0':return 0;
- case '1':return 1;
- case '2':return 2;
- case '3':return 3;
- case '4':return 4;
- case '5':return 5;
- case '6':return 6;
- case '7':return 7;
- case '8':return 8;
- case '9':return 9;
- case 'a':case 'A':
- return 10;
- case 'b':case 'B':
- return 11;
- case 'c':case 'C':
- return 12;
- case 'd':case 'D':
- return 13;
- case 'e':case 'E':
- return 14;
- case 'f':case 'F':
- return 15;
- default:
- return -1;
- }
- }
-
- echo "Valeur hexadécimal de " . CharHexToNumber('E') . "<br />";
- ?>
on obtiendra le résultat suivant :
Valeur hexadécimal de 14
Dernière mise à jour : Mercredi, le 20 janvier 2016