我想從命令行運行PHP腳本,但我也想爲該腳本設置一個變量。從命令行運行php腳本,變量爲
瀏覽器版本:script.php?var=3
命令行:php -f script.php
(但我怎麼給它含有3個變量?)
我想從命令行運行PHP腳本,但我也想爲該腳本設置一個變量。從命令行運行php腳本,變量爲
瀏覽器版本:script.php?var=3
命令行:php -f script.php
(但我怎麼給它含有3個變量?)
腳本:
<?php
// number of arguments passed to the script
var_dump($argc);
// the arguments as an array. first argument is always the script name
var_dump($argv);
命令:
$ php -f test.php foo bar baz
int(4)
array(4) {
[0]=>
string(8) "test.php"
[1]=>
string(3) "foo"
[2]=>
string(3) "bar"
[3]=>
string(3) "baz"
}
除了使用argc和argv通過Ionut G. Stan指示,你也可以使用PEAR模塊Console_Getopt可以解析出UNIX風格的命令行選項。有關更多信息,請參閱this article。
另外,在Zend_Console_Getopt類中的Zend框架中也有類似的功能。
除了argv的(如約努茨提到的),你可以使用環境變量:
如:
var = 3 php -f test.php
在test.php的:
$var = getenv("var");
很多解決方案根據它們的順序將參數放入變量中。例如,
myfile.php 5 7
將把第一個變量和第五個變量放到下一個變量中。
我想命名參數:
myfile.php a=1 x=8
,這樣我可以把它們作爲在PHP代碼中的變量名。
是約努茨G.斯坦給了在 http://www.php.net/manual/en/features.commandline.php
鏈接給我的回答。
sep16在PSU點EDU:
您可以輕鬆地通過使用parse_str()函數解析命令行參數到$ _GET變量。
<?php
parse_str(implode('&', array_slice($argv, 1)), $_GET);
?>
它的行爲完全像你的CGI-PHP的期待。
$ php -f somefile.php a=1 b[]=2 b[]=3
這將設置$ _GET [ 'A']爲 '1' 和$ _GET [ 'B']到陣列( '2', '3')。
工作正常...其他答案也可以工作,但這是第一個,並且確實使它看起來比擁有一長串變量名稱和數據更好。 – Hintswen 2009-06-10 08:46:07