【问题标题】:PHP: issue with switch with rangePHP:范围开关的问题
【发布时间】:2014-02-11 20:36:15
【问题描述】:

我想在 PHP 中使用 switch 语句来区分以下情况。 这里有人可以帮助并告诉我如何更改它以使其适用于数字范围(整数)吗?

  • $myVar
  • $myVar
  • $myVar
  • $myVar
  • $myVar
  • 默认

到目前为止,我有以下内容,但猜想这需要修改,因为范围:

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

非常感谢您提供的任何帮助,蒂姆

【问题讨论】:

标签: php switch-statement range numeric-ranges


【解决方案1】:

你可以这样做:

$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 的 cmets 中有几个很好的例子。

【讨论】:

  • 谢谢你 - 太完美了!
  • 关于这个的一个后续问题,这在 JavaScript 中也会以同样的方式工作吗?
  • 查看这个 SO 答案:stackoverflow.com/questions/17145723/… 在那里你会找到这个额外问题的好来源。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2016-08-30
    • 2011-04-10
    • 2011-08-11
    • 2011-09-26
    • 1970-01-01
    相关资源
    最近更新 更多