2009-07-19 15 views
1

関数に無限の量の引数を渡し、それぞれの引数を見出しの中に定義することなくそれらの引数すべてにアクセスする方法はありますか?未定義の引数へのアクセス

function doSomething($var1="", $var2="".........) 
{ 
    // Do something with the arguments 
} 

私は引数の束を定義する必要はありません。配列内のすべての引数を取得する方法はありますか?定義されていなくても?私はいくつかのネイティブPHP関数は、引数の無限の数を受け入れることができ見てきましたが、ユーザー定義関数が行うことができます

func("hello", "ya", "hi", "blah", "test", "go"); 

function func() 
{ 
    //Loop Over Arguments 
} 

:(PHP BTW)

最終的な結果は次のようになります。同じ?

答えて

5

あなたはこれら三つの変数宣言した考慮func_get_argsfunc_get_arg、およびfunc_num_args

を使用することができます。

$param_1 = "A"; 
$param_2 = "B"; 
$param_3 = "C"; 

をここに1つのアレイ内のすべてのパラメータを取得するためにfunc_get_argsを使用して、最初の例です:

my_function_1($param_1, $param_2, $param_3); 

function my_function_1() 
{ 
    $num_args = func_num_args(); 
    if ($num_args >= 1) { 
     $args = func_get_args(); 
     var_dump($args); 
    } 
} 

また、パラメータを1つずつ取得するもう1つの方法は、です:

my_function_2($param_1, $param_2, $param_3); 

function my_function_2() 
{ 
    $num_args = func_num_args(); 
    if ($num_args >= 1) { 
     $args = func_get_args(); 
     for ($i = 0 ; $i<$num_args ; $i++) { 
      var_dump(func_get_arg($i)); 
     } 
    } 
} 
3

func_get_argsを参照してください。それはあなたが望むものを正確に行います

+0

応答が早いのに感謝します。 –

2

はい、間違いありません。 func_get_args()をチェックしてください。必要なものを正確に実行する必要があります。

0

あなたは関数がusing func_num_args()でと呼ばれたどのように多くの引数を見つけることができます。次に、func_get_arg(index)を使用してインデックスを指定するか、すべての引数をfunc_get_args()を使用して配列として指定することによって、各引数を取得できます。

例:あなたはfunc_get_args()を使用しますが、なぜ配列にパラメータを渡すしようとすることはできません前に、他の人のよう

function variable_arguments() { 
    echo "This function was called with ".func_num_args()." arguments.<br />"; 
    echo "Those arguments were:<br /><pre>"; 
    echo print_r(func_get_args()); 
    echo "</pre>"; 
} 

variable_arguments("Hello", 42, array(true)); 
0

が掲載されていますか? PHPはゆるく型付けされているので、何かを格納することができます。

$params = array(1, 2, 'something'); 
doSomething($params); 

function doSomething($params) { 
    foreach ($params as $value) { 
    // do something. 
    } 
} 

それはあなたが関数のパラメータを期待して、あなたが偶然に配列を経由してわずかなオーバーヘッドで好きなようにあなたはまだのように多くのパラメータを渡すことができ、開発者に見えますので、私はこれを好みます。

関連する問題