PHPでコマンドライン引数を渡す・受け取る方法!(argv)

PHP

PHPでコマンドライン引数を渡して、プログラムで受け取る方法について書いています。
コマンドライン引数を渡すには、実行ファイルの後に半角スペースを書いて、渡したい引数を並べます。

コマンドライン引数を受け取るときには、プログラムで$argv変数を使います。
引数の個数は$argc変数を参照するとわかります。

載せているコードはPHPのバージョンの8.1.12で動作を確認しています。
それでは、確認していきましょう。

コマンドライン引数を渡す

コマンドライン引数を渡すときには、PHPの実行ファイルパスを書いた後に渡したい引数を並べます。
例えば、下記のように引数を渡すことができます。

$ php commandArgs.php apple grape orange

ファイル名のcommandArgs.phpの後に、引数として「apple」・「grape」・「orange」を渡しました。

コマンドライン引数を受け取る

コマンドライン引数を受け取るときには、$argv変数を使うことで受け取れます。
コマンドラインからプログラムが実行されると、$argv変数には実行時に渡された引数が配列になって入ってきます。

例えば、下記のように$argv変数を参照すると渡された値が入っていることが確認できます。

<?php
var_dump($argv);

var_dump関数で、$argv変数の中身を確認してみました。
下記のように、コマンドラインから引数を渡して、プログラムを実行します。

$ php commandArgs.php apple banana peach

そうすると、このように配列に渡された引数が入っていることが確認できました。

array(4) {
  [0]=>
  string(15) "commandArgs.php"
  [1]=>
  string(5) "apple"
  [2]=>
  string(6) "banana"
  [3]=>
  string(5) "peach"
}

$argv変数を確認すると、実行ファイルパスも含まれていて配列の0番目に入っていました。
それぞれの要素に、要素番号でアクセスすると取り出すことができます。

<?php

echo $argv[1]; // apple
echo $argv[2]; // banana
echo $argv[3]; // peach

コマンドライン引数の数を確認する

コマンドライン引数の数を知りたい場合には、$argc変数を使うと良いです。
例えば、下記のように出力するようにします。

<?php
var_dump($argc);

var_dump関数で$argc変数の中身を出力しました。
$argc変数には実行ファイルパスを含んだ引数の数が入っています。

コマンドラインから引数を渡して、プログラムを実行します。

$ php commandArgs.php apple banana peach

出力内容を確認すると、下記のようにファイルパス(commandArgs.php)を含んで、「4」になっていることが確認できました。

int(4)

ファイルに渡した引数としては、「4」からファイルパスを抜いた(-1)数の3つですね。

コマンドライン引数には$argvと$argcを使おう

今回はPHPのコマンドライン引数について記載しました。

まとめると下記になります。

・PHPのコマンドライン引数は、実行ファイルに対して半角スペースを入れて並べて定義する
・PHPのコマンドライン引数を受け取るときには`$argv`変数を使う。(配列で入っている)
・PHPのコマンドライン引数の数は`$argc`変数を参照する。(数値型で入っている)

コメント

タイトルとURLをコピーしました