代码之家  ›  专栏  ›  技术社区  ›  Urda Gael Fraiteur

我如何处理开关盒的OR语句?(PHP)

  •  5
  • Urda Gael Fraiteur  · 技术社区  · 16 年前

    如何转换此if语句:

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

    换成开关箱 没有 需要写两个switch语句吗?

    4 回复  |  直到 14 年前
        1
  •  13
  •   Tim Cooper    16 年前
    switch($argv[$i])
    {
        case '-V':
        case '--version':
            $displayVersion = true;
        break;
    }
    
        2
  •  5
  •   Yacoby    16 年前

    直接翻译如下:

    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
  •  3
  •   Michael Moussa Tejay Cardon    16 年前
    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
  •  2
  •   Powerlord    16 年前

    除了修复这个问题,您可能还需要查看PHP getopt 命令,它是一个函数,用于处理短格式和长格式的命令行参数。

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

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

    请注意,您需要使用php 5.3才能在Windows上工作。

    推荐文章