作成日:2021-02-08, 更新日:2021-02-08
引数の数を取得
・「$argc」を使う
・ファイル名もカウントされるので最低でも「1」(・・・phpコマンドの引数の一つ目がファイル名ってコトかな?)
サンプル
var_dump($argc);
▼結果
> php 〇〇〇.php int(1) > php 〇〇〇.php a1 b2 c3 int(4)
引数の値を取得
・「$argv」を使う
サンプル
var_dump($argv);
▼結果
> php 〇〇〇.php
array(1) {
[0]=>
string(xx) ".\〇〇〇.php"
}
> php 〇〇〇.php -a1 -b2 -c3
array(4) {
[0]=>
string(xx) ".\〇〇〇.php"
[1]=>
string(3) "-a1"
[2]=>
string(3) "-b2"
[3]=>
string(3) "-c3"
}
引数をキー・バリュー形式で取得
・「getopt()」を使う(※getopt( string $short_options, array $long_options=[], int &$rest_index=null ))
・オプションが「-」と「--」で微妙に異なる
・キーとバリューは空白不要
「-」付きのオプションと値をキー・バリューで取得
・キー名は1文字の英数のみ
・「getopt()」の引数の一つ目を使う
・指定したオプションのみ引数として取得可能
・引数の値は「必須、任意、不許可」と設定可能
「:(コロン)」の数
| 「:(コロン)」の数 | 内容 | 例)「-a」と「-b」を取得 |
|---|---|---|
| 2 | 値は任意 |
getopt('a::b::')
|
| 1 | 値は必須 |
getopt('a:b:')
|
| 0 | 値は拒否 |
getopt('ab')
|
サンプル
| コマンド | 値は任意
var_dump(getopt('a::1::'));
|
値は必須
var_dump(getopt('a:1:'));
|
値は拒否
var_dump(getopt('a1'));
|
|---|---|---|---|
> php 〇〇〇.php -a9 -1b |
array(2) {
["a"]=>
string(1) "9"
[1]=>
string(1) "b"
}
|
array(2) {
["a"]=>
string(1) "9"
[1]=>
string(1) "b"
}
|
array(2) {
["a"]=>
bool(false)
[1]=>
bool(false)
}
|
> php 〇〇〇.php -a9 -1 |
array(2) {
["a"]=>
string(1) "9"
[1]=>
bool(false)
}
|
array(2) {
["a"]=>
string(1) "9"
}
|
array(2) {
["a"]=>
bool(false)
[1]=>
bool(false)
}
|
> php 〇〇〇.php -a9 |
array(1) {
["a"]=>
string(1) "9"
}
|
array(1) {
["a"]=>
string(1) "9"
}
|
array(1) {
["a"]=>
bool(false)
}
|
ダメな例
オプション名を2文字以上にしたいときのダメな例
var_dump(getopt('year::'));
▼結果
> php 〇〇〇.php -year2021
array(3) {
["y"]=>
bool(false)
["e"]=>
bool(false)
["a"]=>
string(5) "r2021"
}
「--」付きのオプションと値をキー・バリューで取得
「-」付きのオプションの設定と基本は同じだけど、下記が異なる
・キー名は2文字以上でもOK
・キー名と値はに空白
・「getopt()」の引数の2つ目を使う
・区切り文字の指定が省くと取得できないことがある
$short_rule_argv = ''; $long_rule_argv = array( 'a::', '1::', 'year::', ); var_dump(getopt($short_rule_argv, $long_rule_argv));
※「:(コロン)」の数の指定は上記と同じ
区切り文字「=」を使う
> php 〇〇〇.php --a=9 --1=b --year=2021
array(3) {
["a"]=>
string(1) "9"
[1]=>
string(1) "b"
["year"]=>
string(4) "2021"
}
区切り文字を半角空白にした場合
> php 〇〇〇.php --a 9 --1 b --year 2021
array(1) {
["a"]=>
bool(false)
}
空白入りの値を渡したい
> php 〇〇〇.php --a="9 8" --1="b c" --year="202 1"
array(3) {
["a"]=>
string(3) "9 8"
[1]=>
string(3) "b c"
["year"]=>
string(5) "202 1"
}
メモ
▼「a"b」みたいに「"」も値に含めて渡したいけど出来なかった
・「php 〇〇〇.php a"b」
・「php 〇〇〇.php "a""b"」
・「php 〇〇〇.php "a\"b"」
・「php 〇〇〇.php "a""b"」
※「$argv」のほうも確認したけど出来なかった
※「a"b」じゃなく「a'b」だと渡すことはできた(※「"」で囲む必要はあるっぽい:「php 〇〇〇.php "a'b"」)
どうしても「"」を渡したければ・・・方法はあるだろうけど、「"」を渡す予定がないので・・・未調査。