【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}日です'