cli下获取参数

shell命令下把PHP当作脚本执行时如何给php传参,这里有几种解决方法供参考

argv

test.php内容如下

<?php
print_r($argv);

命令行执行

/usr/bin/php test.php abc def mmm

####

Array
(
    [0] => test.php
    [1] => abc
    [2] => def
    [3] => mmm
)

getopt

参数


options

该字符串中的每个字符会被当做选项字符,匹配传入脚本的选项以单个连字符(-)开头。 比如,一个选项字符串 “x” 识别了一个选项 -x。 只允许 a-z、A-Z 和 0-9。

longopts

选项数组。此数组中的每个元素会被作为选项字符串,匹配了以两个连字符(—)传入到脚本的选项。 例如,长选项元素 “opt” 识别了一个选项 —opt。

optind

If the optind parameter is present, then the index where argument parsing stopped will be written to this variable.

  • 单独的字符(不接受值)
  • 后面跟随冒号的字符(此选项需要值)
  • 后面跟随两个冒号的字符(此选项的值可选)

test.php内容如下

<?php
$longopts = array (
    "user:", //需要
    "password:",
    "host:",//可以不需要
    "db::",
    "table" //不接收
);

$param = getopt ('', $longopts);
print_r ($param);

执行

/usr/bin/php test.php --user root --password 123456 --host localhost --db=mysql --table=table

Array
(
    [user] => root
    [password] => 123456
    [host] => localhost
    [db] => mysql
    [table] =>
)
接收短参数
<?php
//u 接收
//p 接收
//h 可选
$param = getopt ('u:p:h::');
print_r ($param);

执行

/usr/bin/php test.php -u root -p 123456 -hlocalhost
Array
(
    [u] => root
    [p] => 123456
    [h] => localhost
)