Heute mal ein nützliches Code-Snippet um Kommandozeilenparameter auszuwerten. Gegeben seien Standardwerte als Array in $conf['params']
, beispielsweise
array( 'narf' => 'zort', 'foo' => false, 'bar' => true, );
Das Skript wollen wir so aufrufen, dass booleans als einwertige Parameter übergeben werden können:
# Standard: php -f skript.php # narf=puit, foo=true php -f skript.php -- narf=puit foo # bar=false php -f skript.php -- bar=0
Und so wirds gemacht:
// CLI args override conf['params'] if (isset($argv)) { for($i=1;$i<$argc;++$i) { list($param,$value) = explode('=', $argv[$i], 2) + array(1=>true); $conf['params'][$param] = $value; } }
Der Clou ist die Array-Vereinigung mittels +, der Index 1 wird hier im Gegensatz zu array_merge()
nur gesetzt wenn er noch nicht vorhanden ist, somit wird foo
behandelt wie foo=true