コマンドラインでPHPに渡す引数をkey/value形式に変換

$argvで得られる引数リストをハッシュ配列にする

$argvの出力結果を確認

PHPをコマンドラインで実行することが出来ます。

実行するプログラムには引数を渡すことが可能です。

php install.php parameter1 parameter2 parameter3

上の例はinstall.phpに3つの引数を渡しています。

instal.php内で、引数を利用する場合には、

var_dump($argv);

とすることで個々の引数が配列化されます。

$argvの詳細はPHPマニュアルで確認することができます。

PHP: $argv

プレフィックス付きの引数をキーにする

コマンドラインで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"
}

Webエンジニアブログにコメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

コマンドラインでPHPに渡す引数をkey/value形式に変換の記事にコメントを投稿

PHP