通常PHP都做http方式请求了,可以使用GET、POST…方式接收参数,有些时候需要在shell命令下把PHP当作脚本执行,比如定时任务。这就涉及到在shell命令下如何给php传参的问题,通常有三种方式传参。
创建test.php文件
$argv
和$argc
参数接收
/**
* 使用 $argc $argv 接受参数
*/
var_dump($argc,$argv);
终端输入,然后回车
php test.php a b 1 2
输出
int(5)
array(5) {
[0]=>
string(8) "test.php"
[1]=>
string(1) "a"
[2]=>
string(1) "b"
[3]=>
string(1) "1"
[4]=>
string(1) "2"
}
可以发现命令php后面全部都被收集为参数了
getopt
函数(推荐使用这种方法)注意:短变量名称只能是字母
/**
* 使用 getopt函数
*/
$param_arr = getopt('a:b:',['c::','d::']);
var_dump($param_arr);
终端输入,然后回车
php test.php -a123 -b456 --c=789 --d=abc
//或者
php test.php -a 123 -b 456 --c=789 --d=abc
//或者
php test.php -a=123 -b=456 --c=789 --d=abc
输出
array(4) {
["b"]=>
string(3) "123"
["a"]=>
string(3) "456"
["c"]=>
string(3) "789"
["d"]=>
string(3) "abc"
}
具体使用方法参考函数getopt()
/**
* 提示用户输入,类似Python
*/
fwrite(STDOUT,'please input:');
echo 'your input is:'.fgets(STDIN);
终端输入,然后回车
php test.php
please input:1
your input is:1