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;
}
Другие вопросы по тегам