私は 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 でコマンドライン フラグを処理する方法についての提案を探しています。
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 が、配列のキーが $opts{'a'} などのフラグである perl のようにならないのはなぜかと思います。