Il est de bon ton de se souhaiter la bonne année. Mais vous, et vous seul, pourrez faire en sorte que cette année soit bonne, meilleure que celle qui vient de s'écouler. Apprenez à ne compter que sur vous, car personne n'est plus qualifié que vous-même pour bâtir, réparer ou améliorer votre propre vie. Personne ne fera les choses à votre place. D'ailleurs, tout ce que les autres peuvent faire, c'est souhaiter que vous le fassiez. Et ne croyez pas que tout ceux qui vous entourent vous apporteront des solutions : certains font juste partie de vos problèmes. Transformez vos résolutions en actes, et dans douze mois, retournez-vous et souriez-vous fièrement : C'était long. C'était difficile. Mais ça y est : 2017 était une bonne année, merci Moi.

PHP - MySQL [Retour au menu]
Switch - Case

break, default, plages de valeur

Le Switch permet d'avoir une écriture simplifiée, nettement plus lisibile qu'une pile de if then else.

Exemple simple

$Nombre = 2;
switch($Nombre)
  {
  case 1:
    echo "Un";
  case 2:
    echo "Deux";
  case 3:
    echo "Trois";
  }

Dans cet exemple le résultat sera étrangement :
DeuxTrois

Je n'ai pas d'explication quant à ce phénomène, mais j'ai une solution :

Il est nécessaire d'inclure le mot-clé break; afin de l'informer qu'il doit s'arrêter. Le code suivant :

$Nombre = 2;
switch($Nombre)
  {
  case 1:
    echo "Un";
    break;
  case 2:
    echo "Deux";
    break;
  case 3:
    echo "Trois";
    break;
  }

affichera :
Deux

Phénomène lié au break :

Dès qu'une comparaison est exécutée, le break renvoie immédiatement à la ligne d'instruction après le Switch. Exemple :

$Nombre = 5;
switch($Nombre)
  {
  case 5 :
    echo "Cinq";
    break;
  case 5 :
    echo "Five";
    break;
}

Affiche seulement :
Cinq

Gestion des valeurs non prévues avec default

Si nombre est différent de 1,2 ou 3, on veut afficher "Nombre différent de 1, 2 ou 3" :

$Nombre = 5;
switch($Nombre)
  {
  case 1:
    echo "Un";
    break;
  case 2:
    echo "Deux";
    break;
  case 3:
    echo "Trois";
    break;
  default:
    echo "Nombre différent de 1, 2 ou 3";
    break;

}

Gestion des plages de valeur

Il faut savoir que l'écriture

$Nombre = 1;
switch($Nombre)
  {
  case 1:
    echo "Un";
    break;
  }

N'est que la contraction de l'écriture :

$Nombre = 1;
switch($Nombre)
  {
  case $Nombre == 1:
    echo "Un";
    break;
  }

Quand on a compris ça, la gestion des plages de valeurs coule de source. L'exemple suivant affiche :

$Nombre = 32;
switch ($Nombre)
  {
  case ($Nombre < 10) :
    echo "petit";
    break;
  case (($Nombre >= 10) && ($Nombre <= 50)) :
    echo "Moyen";
    break;
  case ($Nombre > 50) : // ou default, c'est pareil
    echo "Grand";
    break; // dernier break facultatif par sa nature même
  }

-