wake-up-neo.com

PHP switch case more als 1 value in dem Fall

Ich habe eine andere Situation. Ich habe eine Variable, die die Werte enthält ("Wöchentlich", "Monatlich", "Vierteljährlich", "Jährlich"), und ich habe eine andere Variable, die die Werte von 1 bis 10 enthält.

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

Es ist nicht schön, weil mein Code viele Duplikate enthält. Was ich möchte:

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

Wie kann ich das in PHP machen? Danke im Voraus. Entschuldigung für mein Englisch.

42
Alex Pliutau

der einfachste und wahrscheinlich beste Weg, die Leistung zu verbessern, wäre:

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

auch für komplexere Situationen möglich:

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

in diesem Szenario muss $ var2 festgelegt werden und darf nicht null oder 0 sein

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

Alles nach dem ersten übereinstimmenden Fall wird ausgeführt, bis eine break-Anweisung gefunden wird. Es geht also nur zum nächsten Fall über, sodass Sie Fälle "gruppieren" können.

9
deceze

Der Schalter ist auch sehr praktisch für AB-Tests. Hier der Code zum zufälligen Testen von 4 verschiedenen Versionen von etwas:

$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