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