2010-12-08 9 views
1

Voici l'exemple de code.problème avec le commutateur

<?php 
$a =2; 
switch($a) { 
    case 1: 
    case 2: 
    case 3: 
     echo "Logic for error validations"; 

    case 1: 
     echo "1. code to be executed"; 
     break; 

    case 2: 
     echo "2. code to be executed"; 
     break; 

    case 3: 
     echo "3. code to be executed"; 
     break; 

    case 4: 
     echo "4. code to be executed"; 
     break; 

    case 5: 
     echo "5. code to be executed"; 
     break; 
} 
?> 

Pour la valeur de $a comme 1,2,3 j'ai même erreur pour les validations de faire .. La logique de mise à jour diffère à nouveau pour chaque valeur de $ a. Pour réaliser la logique ci-dessus, j'ai utilisé le cas 1: cas 2: cas 3: et n'a pas utilisé BREAK intentionnellement. de sorte qu'il continuera à s'exécuter.

Mais il en résulte o/p, Logique pour les validations d'erreurs 1. code à exécuter.

Maintenant la sortie attendue est, Logique pour les validations d'erreur 2. code à exécuter.

Aidez-moi s'il vous plaît ou suggérer des changements pour produire le rendement attendu. Je peux utiliser IF et basé sur la valeur de $ a, changer le code. Mais j'essaye de faire avec l'aide du commutateur, qui peut être extensible pour des valeurs allant de $ a.

Répondre

5

Vous ne pouvez pas avoir des doublons de cas. Vous devriez faire quelque chose comme ci-dessous.

<?php 
$a =2; 
switch($a) { 
    case 1: 
     error(); 
     echo "1. code to be executed"; 
     break; 
    case 2: 
     error(); 
     echo "2. code to be executed"; 
     break; 
    case 3: 
     error(); 
     echo "3. code to be executed"; 
     break; 
    case 4: 
     echo "4. code to be executed"; 
     break; 
    case 5: 
     echo "5. code to be executed"; 
     break; 
} 

function error() 
{ 
    echo "Logic for error validations"; 
} 


?> 

Espérons que cela aide.

+0

+1, Thanku pour la réponse. Gud travaille autour. – satya

1

Je suggérerais d'utiliser 2 instructions de cas pour cela, la première contenant les validations d'erreur et la seconde traitant les résultats.

4

Impossible d'utiliser deux fois la même valeur dans case.

<?php 
$a =2; 
switch($a) { 
case 1: 
case 2: 
case 3: 
    echo "Logic for error validations"; 
} 
switch($a) { 
case 1: 
    echo "1. code to be executed"; 
    break; 
case 2: 
    echo "2. code to be executed"; 
    break; 
case 3: 
    echo "3. code to be executed"; 
    break; 
case 4: 
    echo "4. code to be executed"; 
    break; 
case 5: 
    echo "5. code to be executed"; 
    break; 
} 
?> 
+0

+1, Merci pour la réponse. Gud travaille autour. – satya

2

Diviser en deux commutateurs. Il est généralement une mauvaise idée d'avoir la même étiquette deux fois dans un commutateur

switch($a) { 

    case 1: 
    case 2: 
    case 3: 
     echo "Logic for error validations"; 
} 

switch($a){ 
    case 1: 
     echo "1. code to be executed"; 
     break; 

    case 2: 
     echo "2. code to be executed"; 
     break; 

    case 3: 
     echo "3. code to be executed"; 
     break; 

    case 4: 
     echo "4. code to be executed"; 
     break; 

    case 5: 
     echo "5. code to be executed"; 
     break; 

} 
3

essayer avec faire un second commutateur

<?php 
$a =2; 
switch($a) { 

    case 1: 
    case 2: 
    case 3: 

     echo "Logic for error validations"; 
     switch($a){ 
      case 1: 
      echo "1. code to be executed"; 
      break; 
     } 

    break; 

} 

?>