ホームページ > バックエンド開発 > PHPチュートリアル > PHP CLIモードでパラメータを取得する方法

PHP CLIモードでパラメータを取得する方法

jacklove
リリース: 2023-03-31 06:22:02
オリジナル
1886 人が閲覧しました

php が cli モードでパラメータを受け取る方法は 2 つあります。

1. argv 配列を使用します。
2. getopt メソッドを使用します。##1. argv 配列を使用します。

# たとえば、php を実行し、3 つのパラメータ (type=news、is_hot=1、limit=5) を渡す必要があります。

test.php

<?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[&#39;type&#39;] = $argv[1];$param[&#39;is_hot&#39;] = $argv[2];$param[&#39;limit&#39;] = $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. オプションのインスタンスを使用します。

a、b、c は必須の値です。

d はオプションの値です。

e は受け入れられない値です。

<?php$param = getopt(&#39;a:b:c:d::e&#39;);
print_r($param);?>
ログイン後にコピー

Execute
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 は必須の値です。

limit はオプションの値です。

expire は受け入れられない値です

<?php$longopt = array(    &#39;type:&#39;,    &#39;is_hot:&#39;,    &#39;limit::&#39;,    &#39;expire&#39;);$param = getopt(&#39;&#39;, $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(    &#39;type:&#39;,    &#39;is_hot:&#39;,    &#39;limit::&#39;,    &#39;expire&#39;);$param = getopt(&#39;&#39;, $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 による 1G ファイル サイズの読み取り

PHP クラス初期化関数コードの説明

以上がPHP CLIモードでパラメータを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート