我怎么会去转换这个if语句:我会如何做一个开关案件的OR语句? (PHP)
for($i = 1; $i < $argc; $i++)
{
...
if(in_array($argv[$i], array('-V', '--version')))
{
$displayVersion = TRUE;
}
...
}
到交换机的情况下没有需要写两个switch语句?
我怎么会去转换这个if语句:我会如何做一个开关案件的OR语句? (PHP)
for($i = 1; $i < $argc; $i++)
{
...
if(in_array($argv[$i], array('-V', '--version')))
{
$displayVersion = TRUE;
}
...
}
到交换机的情况下没有需要写两个switch语句?
switch($argv[$i])
{
case '-V':
case '--version':
$displayVersion = true;
break;
}
switch ($argv[$i])
{
case '-V':
case '--version':
$displayVersion = true;
break;
case 'other':
// do other stuff
break;
default:
// your "else" case would go here
break:
}
直接翻译将是如下:
switch(in_array($argv[$i], array('-V', '--version'))){
case true:
$displayVersion = TRUE; break;
}
然而,你也可以做这样的事情,这是更清晰。
switch($argv[$i]){
case '-V':
case '--version':
$displayVersion = TRUE; break;
}
取决于你想要做什么,一个内衬可能会更清楚,尽管它从上面的代码中,变量将被设置为false,如果in_array($argv[$i], array('-V', '--version'))
是假的不同。鉴于你的变量名,我怀疑这是一件坏事。
$displayVersion = in_array($argv[$i], array('-V', '--version'));
除了固定这一点,你可能想看看PHP getopt命令,这是处理命令行参数在短期和长期格式的功能。
编辑:其实,这里有一个代码块
$options = getopt('V', array('version'));
if ($options['V'] || $options['version']) {
$displayVersion = TRUE;
}
请注意,你需要PHP 5.3这个在Windows上运行。
我甚至没有想过这样做!非常感谢! – Urda 2010-02-01 14:21:15