5

関数を渡すために可変数の引数を渡す最もエレガントな方法を探しています。

そのような関数を考えてみましょう:

function abc ($x, $y, $l, $m) {
...
}

多くの「if」または関数を呼び出すための1つの変数としてパスする変数の配列を使用しないエレガントな方法はありますか:

all ($x, $y, $l, $m) arguments
first three ($x, $y, $l) arguments
first and third ($x, $l) arguments
only second ($y) argument
last two ($l, $m) arguments

ご意見をお聞かせください。

4

7 に答える 7

5

むしろ配列をパラメーターとして使用し、関数内で変数が存在するかどうかを確認します。

function abc ($data) {

    if(isset($data['x']){
       //whatever
    }

    if(isset($data['y']){
       //whatever
    }

    ...
}
于 2013-03-27T15:33:12.057 に答える
1

func_get_args()func_get_arg()およびをご覧くださいfunc_num_args()

もちろん、これらを使用する場合、 を呼び出すだけで「最初の」引数と「3 番目の」引数を取得する方法はありませんabc($x, $l)。に電話する必要がありますabc($x, null, $l)

于 2013-03-27T15:34:51.460 に答える
0

あなたのソリューションの正確な代替案は考えられません...送信したくないパラメータにnullを渡す必要がありますabc (null, $y, null, $m)

または考えていたのは、次のような call_user_func_array を使用したものです

 $params = array('','y','','m');
 call_user_func_array('abc', $params);
于 2013-03-27T15:45:33.090 に答える
0
function abc ($x=null, $y=null, $l=null, $m=null) {

}

次に、次のように関数を呼び出します。

すべて ($x、$y、$l、$m) の引数

最初の 3 つの ($x、$y、$l) 引数

1 番目と 3 番目 ($x、null、$l) の引数

2 番目の (null、$y) 引数のみ

最後の 2 つの (null、null、$l、$m) 引数

于 2013-03-27T15:45:41.030 に答える
0

関数に設定されている変数の数を確認したいということですか?たぶんこれが役立つかもしれません

function abc($a) {
    $args = func_num_args();
    for($i = 0; $i < $args; $i++) {
        print_r(func_get_arg($i));   
    }
}
abc(1,2,3,4);
于 2013-03-27T15:35:32.700 に答える
0
// use **func_get_args** function to grab all arg passed in funcion
function variadic($a,$b) {
    $args = func_get_args();
    foreach ($args as $arg) {
        echo "$arg<br />\n";
    }
}

// pass as array 
$arg = array('a'=> $a,'a'=> $b)
function variadic($arg) 
{
   if(isset($arg[a]))
}
于 2013-03-27T15:37:09.797 に答える