Случай переключения PHP более 1 значения в случае
У меня другая ситуация. У меня есть переменная, которая содержит значения ( "Weekly", "Monthly", "Quarterly", "Annual" ), и у меня есть другая переменная, которая содержит значения от 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.
}
Это не красиво, потому что у моего кода много дубликатов. Что я хочу:
switch ($var2) {
case 1, 2:
$var3 = 'Weekly';
break;
case 3:
$var3 = 'Monthly';
break;
case 4, 5:
$var3 = 'Quarterly';
break;
}
Как я могу это сделать в PHP? Заранее спасибо. Извините за мой английский.
Ответы
Ответ 1
простейшим и, вероятно, лучшим способом было бы:
switch ($var2) {
case 1:
case 2:
$var3 = 'Weekly';
break;
case 3:
$var3 = 'Monthly';
break;
case 4:
case 5:
$var3 = 'Quarterly';
break;
}
также возможно для более сложных ситуаций:
switch ($var2) {
case ($var2 == 1 || $var2 == 2):
$var3 = 'Weekly';
break;
case 3:
$var3 = 'Monthly';
break;
case ($var2 == 4 || $var2 == 5):
$var3 = 'Quarterly';
break;
}
в этом сценарии, $var2 должен быть установлен и не может быть нулевым или 0
Ответ 2
switch ($var2) {
case 1 :
case 2 :
$var3 = 'Weekly';
break;
case 3 :
$var3 = 'Monthly';
break;
case 4 :
case 5 :
$var3 = 'Quarterly';
break;
}
Все после первого совпадения будет выполняться до тех пор, пока не будет найден оператор break. Таким образом, он просто переходит к следующему случаю, что позволяет вам "группировать" случаи.
Ответ 3
Переключатель также очень удобен для тестирования AB. Здесь код для случайного тестирования 4 разных версий:
$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;