$argvで得られる引数リストをハッシュ配列にする
$argvの出力結果を確認
PHPをコマンドラインで実行することが出来ます。
実行するプログラムには引数を渡すことが可能です。
php install.php parameter1 parameter2 parameter3
上の例はinstall.phpに3つの引数を渡しています。
instal.php内で、引数を利用する場合には、
var_dump($argv);
とすることで個々の引数が配列化されます。
$argvの詳細はPHPマニュアルで確認することができます。
プレフィックス付きの引数をキーにする
コマンドラインでPHPを実行する際に、たくさんの引数を付加して実行する場合があります。
php -f install.php -- --parameter1 value1 --parameter2 value2 --parameter3 value3 --parameter4 value4 --parameter5 value5 --parameter6 value6
この場合に、$argvを確認してみると、フラットな配列構造になっていて、プレフィックス付きの引数をキーとして利用するには都合が良くない状態になっています。
array(13) { [0]=> string(11) "install.php" [1]=> string(12) "--parameter1" [2]=> string(6) "value1" [3]=> string(12) "--parameter2" [4]=> string(6) "value2" [5]=> string(12) "--parameter3" [6]=> string(6) "value3" [7]=> string(12) "--parameter4" [8]=> string(6) "value4" [9]=> string(12) "--parameter5" [10]=> string(6) "value5" [11]=> string(12) "--parameter6" [12]=> string(6) "value6" }
プレフィックス付きの引数をキーにするためには、以下のようにします。
$p = array(); while( $arg = array_shift($argv) ) { if( substr( $arg, 0, 2 ) === '--' ) { $p[$arg] = array_shift($argv); } }
データ構造は以下の通り構成されます。
array(6) { ["--parameter1"]=> string(6) "value1" ["--parameter2"]=> string(6) "value2" ["--parameter3"]=> string(6) "value3" ["--parameter4"]=> string(6) "value4" ["--parameter5"]=> string(6) "value5" ["--parameter6"]=> string(6) "value6" }