Existe-t-il un moyen d'utiliser un opérateur "OU" ou un équivalent dans un commutateur PHP?
Par exemple, quelque chose comme ceci:
switch ($value) {
case 1 || 2:
echo 'the value is either 1 or 2';
break;
}
switch ($value)
{
case 1:
case 2:
echo "the value is either 1 or 2.";
break;
}
C'est ce qu'on appelle "tomber à travers" le bloc de cas. Le terme existe dans la plupart des langues implémentant une instruction switch.
Si vous devez utiliser ||
avec 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 pour traiter de grands cas ... imaginez 1
à 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 republierai pas 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 les instructions if
, ou s'il y a un besoin particulièrement fort de switch
, vous pouvez l'utiliser de nouveau:
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 déclaration if
.
Essayez avec ces exemples suivants dans cet article: http://phpswitch.com/
Cas de commutation possibles:
(je). Une instruction switch simple
La déclaration de commutateur est merveilleuse et magique. C'est un élément du langage qui vous permet de sélectionner différentes options pour une valeur et d'exécuter différents éléments de code en fonction de la valeur définie.
Chaque option possible est donné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
Le principal inconvénient de switch est que chaque cas sera traité dans le suivant, sauf si vous l'arrêtez avec pause. 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 de l'option fallthrough pour plusieurs cas
Parce que switch continuera à exécuter du code jusqu'à ce qu'il trouve une rupture, il est assez facile de prendre le concept de fallthrough et d'exécuter le même code pour 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 commutateur PHP ne vous permet pas seulement d'activer la valeur d'une variable particulière: vous pouvez utiliser n'importe quelle expression comme cas, à condition qu'elle donne une valeur à utiliser pour le cas. A titre d'exemple, voici un simple validateur é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.
Essayer
switch($value) {
case 1:
case 2:
echo "the value is either 1 or 2";
break;
}
Je vous suggère de passer http://php.net/manual/en/control-structures.switch.php (manuel)
switch ($your_variable)
{
case 1:
case 2:
echo "the value is either 1 or 2.";
break;
}
explication
Comme pour la valeur que vous voulez exécuter une instruction unique, vous pouvez la mettre sans interruption, car si ou si une interruption est trouvée, elle continuera à exécuter le code et si elle est trouvée, elle sortira du boîtier de commutation.
switch ($value)
{
case 1:
case 2:
echo 'the value is either 1 or 2';
break;
}
utilisez ce code:
switch($a) {
case 1:
case 2:
.......
.......
.......
break;
}
le bloc a appelé à la fois 1 et 2.