web-dev-qa-db-fra.com

PHP changer la casse plus d'une valeur dans le cas

J'ai une autre situation. J'ai une variable qui contient les valeurs ('Hebdomadaire', 'Mensuelle', 'Trimestrielle', 'Annuelle'), et j'ai une autre variable qui contient les valeurs de 1 à 10.

switch ($var2) {
       case 1:
          $var3 = 'Weekly';
          break;
       case 2:
          $var3 = 'Weekly';
          break;
       case 3:
          $var3 = 'Monthly';
          break;
       case 4:
          $var3 = 'Quarterly';
          break;
       case 5:
          $var3 = 'Quarterly';
          break;
       // etc.
}

Ce n'est pas beau, car mon code a beaucoup de doublons. Ce que je veux:

switch ($var2) {
       case 1, 2:
          $var3 = 'Weekly';
          break;
       case 3:
          $var3 = 'Monthly';
          break;
       case 4, 5:
          $var3 = 'Quarterly';
          break;
}

Comment puis-je le faire en PHP? Merci d'avance. Désolé pour mon anglais.

42
Alex Pliutau

la manière la plus simple et probablement la meilleure façon de procéder serait:

switch ($var2) {
       case 1:
       case 2:
          $var3 = 'Weekly';
          break;
       case 3:
          $var3 = 'Monthly';
          break;
       case 4:
       case 5:
          $var3 = 'Quarterly';
          break;
}

également possible pour des situations plus complexes:

switch ($var2) {
    case ($var2 == 1 || $var2 == 2):
        $var3 = 'Weekly';
        break;
    case 3:
        $var3 = 'Monthly';
        break;
    case ($var2 == 4 || $var2 == 5):
        $var3 = 'Quarterly';
        break;
}

dans ce scénario, $ var2 doit être défini et ne peut pas être nul ou 0

101
Hannes
switch ($var2) {
       case 1 :
       case 2 :
          $var3 = 'Weekly';
          break;
       case 3 :
          $var3 = 'Monthly';
          break;
       case 4 :
       case 5 :
          $var3 = 'Quarterly';
          break;
}

Tout ce qui suit le premier cas correspondant sera exécuté jusqu'à ce qu'une instruction break soit trouvée. Il passe donc directement au cas suivant, ce qui vous permet de "grouper" les cas.

9
deceze

Le commutateur est également très pratique pour les tests AB. Voici le code pour tester au hasard 4 versions différentes de quelque chose:

$abctest = mt_Rand(1, 1000);
switch ($abctest) {
   case ($abctest < 250):
     echo "A code here";
     break;
   case ($abctest < 500):
     echo "B code here";
     break;
   case ($abctest < 750):
     echo "C code here";
     break;
   default:
     echo "D code here";
     break;
0
Soccerwidow