PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPの$argvとは?コマンドライン引数の取得方法と使い方を解説

はじめに

PHPスクリプトをコマンドラインから実行する際、$argvというスーパーグローバル配列には、スクリプトに渡された引数が格納されます。配列の最初の要素$argv[0]には必ずスクリプト名そのものが入るため、実際の引数は$argv[1]以降に順番に格納されていきます。

なお、php.iniのregister_argc_argvディレクティブが無効(Off)になっている場合、この変数は利用できません。CLI環境では通常デフォルトで有効になっていますが、Webサーバー経由での実行時は設定を確認しておくと安心です。

$argvの基本構造

$argvは配列として動作し、以下のような構造になっています。

  • $argv[0]:実行されたスクリプトのファイル名(常に先頭に格納される)
  • $argv[1]以降:コマンドラインから渡された引数が順に格納される

また、引数の個数を知りたい場合は$argc変数を使用します。$argcには引数の総数(スクリプト名自体も含む)が整数値で格納されます。

$argvの中身を確認するサンプル

まず、$argvの中身をvar_dump()で確認してみましょう。以下のスクリプトをコマンドラインから実行します。

コード例

<?php
var_dump($argv);
?>

実行結果

array(1) {
   [0]=>
   string(8) "main.php"
}

このように、引数なしで実行した場合は$argvにはスクリプト名「main.php」だけが格納され、配列の要素数は1になります。

コマンドライン引数を使った計算例

次に、コマンドラインから渡した2つの数値を足し算する実用的な例を見てみましょう。

コード例

<?php
$add = $argv[1] + $argv[2];
echo "addition = " . $add;
?>

実行結果

C:\xampp\php>php test1.php 10 20
addition = 30

この例では、「test1.php」に対して「10」と「20」という2つの引数を渡して実行しています。$argv[1]に「10」、$argv[2]に「20」が格納され、その合計「30」が出力されます。

注意点

  • コマンドライン引数はすべて文字列として渡されます。ただし、算術演算を行う場合はPHPが自動的に数値へ型変換(型ジャグリング)するため、上記のような加算も可能です。
  • 引数が渡されているかどうかを事前にチェックしたい場合は、isset()や$argcを使って分岐処理を追加すると、エラーを防げます。
  • スペースを含む引数を渡したい場合は、ダブルクォートで囲んで指定します。

まとめ

$argvは、PHPをコマンドラインから実行する際に引数を受け取るための重要なスーパーグローバル配列です。$argv[0]には常にスクリプト名が入り、実際の引数は$argv[1]以降に格納されます。バッチ処理やCLIツールの作成において頻繁に活用される機能なので、ぜひ使い方をマスターしておきましょう。

  1. PHPのignore_user_abort()関数の使い方を解説

    ignore_user_abort() 関数は、リモートクライアントが実行中のスクリプトを中断できるかどうかを設定するための関数です。長時間かかるバッチ処理やバックグラウンド処理などで、ユーザーがブラウザを閉じたり接続を切断したりした場合でもスクリプトの実行を継続させたいときに役立ちます。 構文 ignore_user_abort(setting) パラメータ setting − true を指定すると、スクリプト内でのユーザーによる中断を無視します(スクリプトは実行を継続します)。デフォルトは false で、この場合クライアントが中断するとスクリプトの実行も停止します。 戻り値 ign

  2. JavaScript変数の値をPHPに渡して取得する方法をわかりやすく解説

    JavaScript変数をPHPで扱う基本の考え方JavaScriptとPHPは実行されるタイミングが異なります。PHPはサーバーサイドで先に処理され、JavaScriptはその結果を受け取ったブラウザ(クライアントサイド)で後から動作します。そのため、JavaScriptの変数をPHPへ「直接」渡すことはできず、何らかの方法でサーバーへ値を送信する必要があります。ただし、同じページ内でJavaScriptの変数の値を出力・表示するだけであれば、以下のように簡単に実現できます。同じページ内でJavaScript変数の値を表示するサンプルコード<script> var res