Existe-t-il un moyen d'utiliser un opérateur «OU» ou é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;
}
Existe-t-il un moyen d'utiliser un opérateur «OU» ou é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;
}
Réponses:
switch ($value)
{
case 1:
case 2:
echo "the value is either 1 or 2.";
break;
}
C'est ce qu'on appelle "passer à travers" le bloc de cas. Le terme existe dans la plupart des langues implémentant une instruction switch.
Si vous devez utiliser ||
avec, switch
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éthode n'est pas efficace lorsqu'il s'agit 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 publierai 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, tenez-vous en à l'utilisation des if
instructions, ou s'il y a un besoin particulièrement fort switch
alors il est possible de l'utiliser à l'avant:
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
déclaration là-bas.
switch()
, et quand je travaille dans un langage C-ish ça me manque vraiment d'avoir Select Case
, ce qui est vraiment une façon abrégée de dire "il y a un grand bloc de if, else if, else-if ... ici ".
you can't use switch for more "complicated" statements
est-ce can't
ou est-ce shouldn't
? parce que dans votre exemple, vouscan
switch (true)
chose n'est pas un cas d'utilisation ordinaire du commutateur.
Essayez avec les exemples suivants dans cet article: http://phpswitch.com/
Cas de commutation possibles:
(je). Une simple déclaration de changement
L'instruction switch est merveilleuse et magique. C'est un morceau 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 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
La mise en garde majeure du commutateur est que chaque cas se poursuivra dans le suivant, sauf si vous l'arrêtez avec une 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 Fallthrough pour plusieurs cas
Étant donné que le commutateur continuera d'exécuter du code jusqu'à ce qu'il trouve une interruption, il est assez facile de prendre le concept de fallthrough et d'exécuter le même code pour plus d'un 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 de PHP ne vous permet pas seulement d'activer la valeur d'une variable particulière: vous pouvez utiliser n'importe quelle expression comme l'un des cas, tant qu'il donne une valeur pour le cas à utiliser. À 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.
Je vous suggère de parcourir 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, vous pouvez le mettre sans interruption comme jusqu'à ce que ou à moins que break ne soit trouvé, il continuera à exécuter le code et si break est trouvé, il sortira du boîtier de commutation.
http://php.net/manual/en/control-structures.switch.php Exemple
$today = date("D");
switch($today){
case "Mon":
case "Tue":
echo "Today is Tuesday or Monday. Buy some food.";
break;
case "Wed":
echo "Today is Wednesday. Visit a doctor.";
break;
case "Thu":
echo "Today is Thursday. Repair your car.";
break;
default:
echo "No information available for that day.";
break;
}
La meilleure façon pourrait être sinon de demander. En outre, cela peut être plus facile et clair à utiliser.
Exemple:
<?php
$go = $_REQUEST['go'];
?>
<?php if ($go == 'general_information'){?>
<div>
echo "hello";
}?>
Au lieu d'utiliser les fonctions qui ne fonctionnent pas bien avec PHP, surtout lorsque vous avez PHP en HTML.