Existe-t-il (en PHP en tout cas) un opérateur OR dans un cas de commutation ?
quelque chose comme
switch ($value) {
case 1 || 2:
echo 'the value is either 1 or 2';
break;
}
Existe-t-il (en PHP en tout cas) un opérateur OR dans un cas de commutation ?
quelque chose comme
switch ($value) {
case 1 || 2:
echo 'the value is either 1 or 2';
break;
}
Si vous devez utiliser ||
con switch
alors vous pouvez essayer :
$v = 1;
switch (true) {
case ($v == 1 || $v == 2):
echo 'the value is either 1 or 2';
break;
}
Sinon, votre solution préférée aurait été
switch($v) {
case 1:
case 2:
echo "the value is either 1 or 2";
break;
}
Le problème est que les deux méthodes ne sont pas efficaces lorsqu'il s'agit de traiter de grands cas ... imaginer. 1
a 100
cela fonctionnerait parfaitement
$r1 = range(1, 100);
$r2 = range(100, 200);
$v = 76;
switch (true) {
case in_array($v, $r1) :
echo 'the value is in range 1 to 100';
break;
case in_array($v, $r2) :
echo 'the value is in range 100 to 200';
break;
}
Je ne vais pas répéter les autres réponses car elles sont toutes correctes, mais j'ajouterai simplement que vous ne pouvez pas utiliser switch pour des instructions plus "compliquées", par exemple pour tester si une valeur est "supérieure à 3", "entre 4 et 6", etc. Si vous avez besoin de faire quelque chose comme ça, utilisez plutôt if
ou s'il y a un besoin particulièrement fort de switch
alors il est possible de l'utiliser à l'envers :
switch (true) {
case ($value > 3) :
// value is greater than 3
break;
case ($value >= 4 && $value <= 6) :
// value is between 4 and 6
break;
}
mais comme je l'ai dit, j'utiliserais personnellement une if
cette déclaration.
Essayez avec les exemples suivants dans cet article : http://phpswitch.com/
Cas possibles d'interrupteurs :
(i). Une simple instruction de commutation
L'instruction switch est merveilleuse et magique. C'est un élément du langage qui vous permet de choisir entre différentes options pour une valeur, et d'exécuter différents morceaux de code en fonction de la valeur définie.
Chaque option possible est indiquée par un cas dans l'instruction switch.
Exemple :
switch($bar)
{
case 4:
echo "This is not the number you're looking for.\n";
$foo = 92;
}
(ii). Délimitation des blocs de code
L'inconvénient majeur de switch est que chaque cas se poursuivra dans le cas suivant, à moins que vous ne l'arrêtiez avec break. Si le cas simple ci-dessus est étendu au cas 5 :
Exemple :
case 4:
echo "This is not the number you're looking for.\n";
$foo = 92;
break;
case 5:
echo "A copy of Ringworld is on its way to you!\n";
$foo = 34;
break;
(iii). Utilisation du repli pour des cas multiples
Étant donné que switch continuera à exécuter le code jusqu'à ce qu'il trouve une faille, il est assez facile de reprendre le concept de fallthrough et d'exécuter le même code dans plusieurs cas :
Exemple :
cas 2 :
case 3:
case 4:
echo "This is not the number you're looking for.\n";
$foo = 92;
break;
case 5:
echo "A copy of Ringworld is on its way to you!\n";
$foo = 34;
break;
(iv). Commutation avancée : cas de condition
Le switch de PHP ne permet pas seulement de basculer sur la valeur d'une variable particulière : vous pouvez utiliser n'importe quelle expression comme l'un des cas, tant qu'elle donne une valeur à utiliser pour le cas. A titre d'exemple, voici un validateur simple écrit en utilisant switch :
Exemple :
switch(true)
{
case (strlen($foo) > 30):
$error = "The value provided is too long.";
$valid = false;
break;
case (!preg_match('/^[A-Z0-9]+$/i', $foo)):
$error = "The value must be alphanumeric.";
$valid = false;
break;
default:
$valid = true;
break;
}
Je pense que cela peut vous aider à résoudre votre problème.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.