Подтвердить что ты не робот

Случай переключения 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? Заранее спасибо. Извините за мой английский.

4b9b3361

Ответ 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;