如何在Switch语句中使用OR条件?(PHP)

5

如何转换这个if语句:

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

在不需要编写两个 switch 语句的情况下,如何将其转换为 switch case 语句?

4个回答

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

我甚至没有想过可以这样做!非常感谢你! - Urda

5
直接翻译如下:
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'))为false,则变量将被设置为false。考虑到您的变量名,我怀疑这不是一个坏事。

$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:
}

2
除了修复这个问题,您可能还想查看PHP的getopt命令,它是一个处理短格式和长格式命令行参数的函数。
编辑:实际上,这里有一个代码块。
$options = getopt('V', array('version'));

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

请注意,您需要在 Windows 上使用 PHP 5.3 才能使其正常工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接