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