【PHP】コマンドライン実行時のパラメータ(引数)取得 - $argv、$argc
コマンドライン実行時に引数を渡す
業務で数カ月に一回くらい、PHPファイルを作ったり修正したりするんですが、忘れたころにぐぐって、あーこんなんでしたってなるなる。
記事を書いて少しでも覚えられますように。
$argvと$argc
PHPをコマンドラインで実行すると、コマンドラインで指定した引数の情報が$argc、$argvという変数に格納されます。 第一引数は必ず、スクリプトのパスが入っているので注意 ※毎回ここでひっかかります…
$ php test.php "param1" "param2"
$argc '' 引数の数 $argc = 1 $argv '' 引数情報の配列 $ar#コマンドライン実行時に引数を渡す
引数を指定しない場合
こんな場合でも引数は入ってきます。
第一引数にスクリプトのフルパスが入ってきます。
$ php test.php
$argc '' 引数の数 $argc = 1 $argv '' 引数情報の配列 $argv[0] = "test.php"
サンプルコード
$ php date.php "20141107"
<?php $yyyy = substr($argv[1], 0, 4); $mm = substr($argv[1], 4, 2); $dd = substr($argv[1], 6, 2); echo '引数に指定した日時は{$yyyy}年{$mm}月{$dd}日です'
gv[0] = "test.php", $argv[1] = "param1", $argv[2] = "param2"
引数を指定しない場合
こんな場合でも引数は入ってきます。
第一引数にスクリプトのフルパスが入ってきます。
$ php test.php
$argc '' 引数の数 $argc = 1 $argv '' 引数情報の配列 $argv[0] = "test.php"
サンプルコード
$ php date.php "20141107"
<?php $yyyy = substr($argv[1], 0, 4); $mm = substr($argv[1], 4, 2); $dd = substr($argv[1], 6, 2); echo '引数に指定した日時は{$yyyy}年{$mm}月{$dd}日です'