PHP: проблема с переключателем с диапазоном
Я хотел бы отличать следующие случаи в PHP с помощью оператора switch. Может кто-то здесь помочь и сказать мне, как я должен изменить это, чтобы заставить его работать с числовыми диапазонами (целыми числами)?
- $ myVar <0
- $ myVar <10
- $ myVar <20
- $ myVar <30
- $ myVar <999
- дефолт
Пока у меня есть следующее, но я предполагаю, что это нуждается в модификации из-за диапазонов:
switch($myVar)
{
case(<0):
// do stuff
break;
case(<10):
// do stuff
break;
case(<20):
// do stuff
break;
case(<30):
// do stuff
break;
case(<999):
// do stuff
break;
default:
// do stuff
break;
}
Большое спасибо за любую помощь с этим, Тим
2 ответа
Решение
Вы можете сделать это так:
$myVar = 50;
switch (true) {
case($myVar < 0):
// do stuff
break;
case($myVar < 10):
// do stuff
break;
case($myVar < 20):
// do stuff
break;
case($myVar < 30):
// do stuff
break;
case($myVar < 999):
// do stuff
break;
default:
// do stuff
break;
}
Есть несколько хороших примеров в комментариях к руководству.
Использовать in_array($myVar,range(100,200))
проверить, существует ли значение в диапазоне.
$myVar = 50;
switch (true) {
case(in_array($myVar,range(0,10))):
// do stuff
break;
case(in_array($myVar,range(20,30))):
// do stuff
break;
case(in_array($myVar,range(30,900))):
// do stuff
break;
default:
// do stuff
break;
}