php が cli モードでパラメータを受け取る方法は 2 つあります。
1. argv 配列を使用します。
2. getopt メソッドを使用します。##1. argv 配列を使用します。
<?phpprint_r($argv);?>を作成します。コマンドライン
php test.php news 1 5出力:
Array( [0] => test.php [1] => news [2] => 1 [3] => 5)argv[0]が現在実行されているphpファイルの名前であり、argv[1]~argv[3]がその値であることがわかります。渡されたパラメータ
argv[1 ] は type の値と等しい
argv[2] は is_hot の値と等しいargv[3] は limit
の値と等しいこのように、渡されたパラメータは、後続の処理操作のために argv 配列に従って取得できます。
欠点:
argv 配列を使用すると、渡されたパラメータを順番に取得できます。ただし、取得後に対応する処理を行う必要があります。上記の例では、argv[1]がtypeパラメータ、argv[2]がis_hotパラメータ、argv[3]がlimitパラメータに対応する必要があります。 。また、転送処理中にパラメータを間違った順序で書き込むと、プログラムエラーが発生します。 例:
<?php$param = array();$param['type'] = $argv[1];$param['is_hot'] = $argv[2];$param['limit'] = $argv[3]; print_r($param);?>実行
php test.php news 1 5出力:
Array( [type] => news [is_hot] => 1 [limit] => 5)
配信順序が異なる場合は取得したパラメータ値異なるため、後続のプログラム エラーが発生します
実行
php test.php 1 5 news出力:
Array( [type] => 1 [is_hot] => 5 [limit] => news )
したがって、argv 配列を使用してパラメータを渡す場合は、次のことが必要です。パラメータが渡される順序に注意してください。
2. getopt メソッドを使用します。
getopt コマンド ライン パラメーター リストからオプションを取得します。array getopt ( string $options [, array $longopts ] )
パラメーター:
options
この文字列内の各文字はオプション文字として扱われ、受信スクリプトに一致するオプションは 1 つのハイフン (-) で始まります。たとえば、オプション文字列「x」はオプション -x を識別します。 a ~ z、A ~ Z、および 0 ~ 9 のみが許可されます。
longopts
オプション配列。この配列内の各要素はオプション文字列として扱われ、スクリプトに渡されたオプションと 2 つのハイフン (-) を組み合わせて照合されます。たとえば、長いオプション要素「opt」はオプション -opt を識別します。
オプションには次の要素が含まれる場合があります:
単一の文字 (値は受け入れられません) 文字の後にコロンが続きます (このオプションには値が必要です) その後に次の文字が続きます2 文字 コロン文字 (このオプションの値はオプションです)
オプションの値は、文字列の後の最初のパラメータです。値の前にスペースがあっても問題ありません。
options と longopts の形式はほぼ同じですが、唯一の違いは、longopts はオプションの配列 (各要素がオプション) である必要があるのに対し、options は文字列 (各文字がオプション) である必要があることです。 。
オプションの値は区切り文字としてスペースを受け入れません。区切り文字として使用できるのは = のみです。
戻り値 この関数はオプション/パラメーターのペアを返し、失敗した場合は FALSE を返します。
1. オプションのインスタンスを使用します。
<?php$param = getopt('a:b:c:d::e'); print_r($param);?>
php test.php -a 1 -b 2 -c 3 -d=4 -e 5出力:
Array( [a] => 1 [b] => 2 [c] => 3 [d] => 4 [e] => )2。longopts インスタンスを使用します。type、is_hot は必須の値です。
<?php$longopt = array( 'type:', 'is_hot:', 'limit::', 'expire');$param = getopt('', $longopt); print_r($param);?>
php test.php --type news --is_hot 1 --limit=10 --expire=100出力:
Array( [type] => news [is_hot] => 1 [limit] => 10 [expire] => )3. 最初の非オプションを検索し、後続のインスタンスを無視します
<?php$longopt = array( 'type:', 'is_hot:', 'limit::', 'expire');$param = getopt('', $longopt); print_r($param);?>実行
php test.php --type news --is_hots 1 --limit=10 --expire=100
Array ( [type] => news )is_hots はオプション値ではない (is_hot が定義されている) ため、これ以降のパラメータはすべて破棄されます。
概要:
argv 配列を使用してパラメータを渡します。このメソッドはシンプルで実装が簡単です。パラメータの順序を間違えることはできず、パラメータを取得した後に対応する処理を行う必要があります。 getopt メソッドを使用すると、パラメータ名を使用でき、パラメータの順序は任意であり、比較的標準化されています。 (推奨)
この記事では、php cli モードでパラメータを取得する方法を紹介します。関連コンテンツについては、php 中国語 Web サイトを参照してください。
PHP コードを通じて配列内の指定されたキーの値を再帰的に取得する方法
以上がPHP CLIモードでパラメータを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。