【问题标题】:How would I do an OR statement with a Switch case? (PHP)我将如何使用 Switch 案例执行 OR 语句? (PHP)
【发布时间】:2011-01-11 17:46:51
【问题描述】:

我将如何转换这个 if 语句:

for($i = 1; $i < $argc; $i++)
{
    ...
    if(in_array($argv[$i], array('-V', '--version')))
    {
        $displayVersion = TRUE;
    }
    ...
}

进入一个switch case 而不需要写两个switch语句?

【问题讨论】:

    标签: php logic switch-statement


    【解决方案1】:
    switch($argv[$i])
    {
        case '-V':
        case '--version':
            $displayVersion = true;
        break;
    }
    

    【讨论】:

    • 我什至没有想过要这样做!非常感谢!
    【解决方案2】:

    直接翻译如下:

    switch(in_array($argv[$i], array('-V', '--version'))){
        case true:
            $displayVersion = TRUE; break;
    }
    

    不过你也可以这样做,这样更清楚。

    switch($argv[$i]){
        case '-V':
        case '--version':
            $displayVersion = TRUE; break;
    }
    

    根据您要执行的操作,单行可能会更清晰,尽管它与上述代码的不同之处在于,如果in_array($argv[$i], array('-V', '--version')) 为假,则该变量将设置为假。鉴于您的变量名称,我怀疑这是一件坏事。

    $displayVersion = in_array($argv[$i], array('-V', '--version'));
    

    【讨论】:

      【解决方案3】:
      switch ($argv[$i])
      {
          case '-V':
          case '--version':
              $displayVersion = true;
              break;
          case 'other':
              // do other stuff
              break;
          default:
              // your "else" case would go here
              break:
      }
      

      【讨论】:

        【解决方案4】:

        除了解决这个问题,您可能还想查看 PHP getopt 命令,这是一个处理短格式和长格式命令行参数的函数。

        编辑:实际上,这是一个代码块

        $options = getopt('V', array('version'));
        
        if ($options['V'] || $options['version']) {
            $displayVersion = TRUE;
        }
        

        请注意,您需要 PHP 5.3 才能在 Windows 上运行。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-11-06
          • 1970-01-01
          • 2011-06-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多