2009-06-10 103 views

回答

30

腳本:

<?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" 
} 

另外,請看using PHP from the command line

+0

工作正常...其他答案也可以工作,但這是第一個,並且確實使它看起來比擁有一長串變量名稱和數據更好。 – Hintswen 2009-06-10 08:46:07

6

除了argv的(如約努茨提到的),你可以使用環境變量:

如:

var = 3 php -f test.php 

在test.php的:

$var = getenv("var"); 
5

如果你想保持命名參數幾乎像var = 3 & foo = bar(而不是$argv提供的位置參數)getopt()可以幫助你。

3

很多解決方案根據它們的順序將參數放入變量中。例如,

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')。