2009-06-10 25 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

4

だけでなくIonut G. Stanによって示されるようにargcargvを使用して、あなたはまた、UNIXスタイルのコマンドラインオプションを解析することができPEARモジュールConsole_Getoptを使用することができます。詳細については、this articleを参照してください。

また、Zend_Console_GetoptクラスのZend Frameworkにも同様の機能があります。 argvのほかに

6

(はIonutが述べたように)、あなたは環境変数を使用することができます:あなたが名前付きパラメータを維持したい場合は

$var = getenv("var"); 
5

例:test.phpをに

var = 3 php -f test.php 

をほぼvar = 3 & foo = bar($argvで提供される位置パラメータの代わりに)getopt()のように助けてください。

3

解決策の多くは、引数をその順序に従って変数に入れます。たとえば、

myfile.php 5 7 

は、5を最初の変数に、7を次の変数に入れます。

私は、引数の名前たかった:

myfile.php a=1 x=8 

私はPHPコードで変数名としてそれらを使用できるように。

はIonut G.スタンは http://www.php.net/manual/en/features.commandline.php

で与えたリンクは、私に答えを与えました。 PSUドットEDUで

sep16:

あなたは簡単にparse_str()関数を使用しての$ _GET変数にコマンドライン引数を解析することができます。

<?php 
parse_str(implode('&', array_slice($argv, 1)), $_GET); 
?> 

これは、cgi-phpとまったく同じように動作します。

$ php -f somefile.php a=1 b[]=2 b[]=3 

このアレイに '1' と$ _GET [ 'B']を$ _GET [ 'A']を設定します( '2'、 '3')。

関連する問題