PHP:带范围的开关问题

时间:2014-02-11 20:36:16

标签: php switch-statement range numeric-ranges

我想在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 个答案:

答案 0 :(得分: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;
}

the manual的评论中有一些很好的例子。

答案 1 :(得分:1)

使用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;
}