$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
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;
}
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
}
-