0

可変数のパラメーターを受け取る関数があり、別の関数を参照してそれらを渡す必要があります。

そのような

function my_function($arg0, $arg1, $arg2, ...)
{
    my_other_function(&$arg0, &$arg1, &$arg2, ...); 
}

my_functionそのため、参照によって物事を渡すときに、参照my_other_functionによってそれらも取得します。

これを行う方法はありますか?

4

2 に答える 2

3

なぜこれが必要なのかしら。一般的に、PHPでは参照は良くありません。

本当にこれを実行したい場合(PHP 5.4では機能しなくなった呼び出し時のpass-by-refハックを無視する)は、パラメーターをラップする配列を使用することです。

function myfunc(array $data) {
    $data[0] += 42;
    /* ... */
}

$var = 0;
myfunc(array(&$var /*, ... */));
echo $var; // prints 42

他の関数に渡すには、 call_user_func_array()を使用できます。

于 2012-07-21T21:13:20.313 に答える
1

技術的には、これを行っていません。

function my_function($arg0, $arg1, $arg2, ...)
{
    my_other_function(&$arg0, &$arg1, &$arg2, ...); 
}

でも、これ:

function my_function(&$arg0, &$arg1, &$arg2, ...)
{
    my_other_function($arg0, $arg1, $arg2, ...); 
}

ただし、@ johannesがすでに書いているように、PHPで参照される可変数の引数(および誰がよりよく知ることができるか)に対する適切なサポートはありません。たとえば、func_get_argsドキュメントは参照では機能しません。

代わりに、提案を利用して、配列パラメーターを介してすべての参照を渡します。それはうまくいきます。

function my_function(array $args)
{
    my_other_function($args); 
}
于 2012-07-21T21:30:45.300 に答える