我在 PHP 5.2 中使用 Console_Getopt,发现它与其他语言(perl、bash、java)中的 getopt 有多么不同,这让我感到惊讶。谁能推荐如何从返回的数组“$opts”中解析参数?
php myprog.php -a varA -c -b varB
$o= new Console_Getopt;
$opts = $o->getopt($argv, "a:b:c");
print_r($opts);
// print_r 在下面返回
Array
(
[0] => Array
(
[0] => Array
(
[0] => a
[1] => varA
)
[1] => Array
(
[0] => c
[1] =>
)
[2] => Array
(
[0] => b
[1] => varB
)
)
[1] => Array
(
)
)
我开始做类似下面的事情,这是冗长的,所以我正在寻找关于在 php.ini 中处理命令行标志的建议。
foreach($opts[0] as $i -> $keyval) {
list($key, $val) = $keyval;
if($key == 'a') {
print "valueForA: $val\n";
} else if($key == 'b') {
print "valueForB: $val\n";
} else if($key == 'c') {
print "c is set\n";
}
}
我想知道为什么 PHP 的 getopt 不像 perl 的那样,其中数组的键是标志,例如 $opts{'a'} .. 那会很方便。