2008-10-16 9 views

Répondre

395
switch ($value) 
{ 
    case 1: 
    case 2: 
     echo "the value is either 1 or 2."; 
    break; 
} 

Ceci est appelé « tomber à travers » le bloc de cas. Le terme existe dans la plupart des langues implémentant une instruction switch.

13

Essayez

switch($value) { 
    case 1: 
    case 2: 
     echo "the value is either 1 or 2"; 
     break; 
} 
45

Je ne rediffuser les autres réponses parce qu'ils sont tous corrects, mais je vais juste ajouter que vous ne pouvez pas utiliser l'interrupteur pour plus de déclarations « compliquées », par exemple: à tester si une valeur est "supérieure à 3", "entre 4 et 6", etc. Si vous devez faire quelque chose comme ça, respectez les instructions if, ou s'il y a un besoin particulier de switch alors il est possible de l'utiliser retour à 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 un if déclaration là.

+1

Heureux de voir que vous avez recommandé if() over switch() dans ce cas. Ce type de commutateur ajoute simplement de la complexité, IMO. – moo

+1

Oui, il faudrait avoir une raison assez convaincante pour choisir ce style, mais il est bon de savoir que c'est possible. – nickf

+2

Je suis vraiment heureux d'avoir appris cela.Chaque fois que je construis un projet dans un langage Basic-y, il me manque un 'switch()' de style C, et quand je travaille dans un langage C-ish, je manque vraiment de 'Select Case', ce qui est vraiment une façon sténographique de dire "il y a un gros bloc de si, sinon si, sinon-si ... ici". –

-2

Le meilleur moyen pourrait être si d'autre avec demander. En outre, cela peut être plus facile et plus clair à utiliser.

Exemple:

<?php 
$go = $_REQUEST['go']; 
?> 
<?php if ($go == 'general_information'){?> 
<div> 
echo "hello"; 
}?> 

Au lieu d'utiliser les fonctions qui ne fonctionnent bien avec PHP, surtout quand vous avez PHP en HTML.

+4

Comment cela est-il plus clair qu'une instruction switch? –

97

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

Si pas 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 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; 
} 
1

utiliser ce code:

switch($a) { 
case 1: 
case 2: 
    ....... 
    ....... 
    ....... 
    break; 
} 

le bloc a appelé à la fois 1 et 2.

1
switch ($value) 
{ 
    case 1: 
    case 2: 
     echo 'the value is either 1 or 2'; 
    break; 
} 
9

Je vous suggère de passer par 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 exécutez une déclaration unique, vous pouvez le mettre sans interruption comme jusqu'à ce que ou à moins que le break soit trouvé, il continuera à exécuter le code et si break trouvé il sortira du boîtier de commutateur.

33

Essayez avec ces exemples suivants dans cet article: http://phpswitch.com/

possibles cas de commutation:

(i). Une instruction de commutateur simple

L'instruction switch est merveilleuse et magique. C'est une partie 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). blocs de code Délimitation

La caveat majeure du commutateur est que chaque cas se déroulera sur dans la suivante, sauf si vous arrêtez avec pause. Si le cas simple ci-dessus est étendue à 5 cas:

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). En utilisant fallthrough pour plusieurs cas

Parce que l'interrupteur gardera le code en cours d'exécution jusqu'à ce qu'il trouve une pause, il est assez facile de prendre le concept de fallthrough et 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 Condition

commutateur de PHP ne pas seulement vous permettre de passer de la valeur d'une variable particulière: vous pouvez utiliser toute expression comme l'un des cas, tant qu'il donne une valeur pour le cas à utiliser. À titre d'exemple, voici simple validateur écrit en utilisant le commutateur:

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.

+0

Avez-vous des cas d'utilisation dans le monde réel pour l'exemple (iv)? –

+0

Non je ne l'avais pas en ce moment @PedroMoreira –

Questions connexes