29

isset()PHPが複数の (制限なしの) 引数を受け入れる方法を知っていますか?

私ができるように:

isset($var1,$var2,$var3,$var4,$var5,$var6,$var7,$var8,$var9,$var10,$var11);
//etc etc

どうすれば自分の関数でそれを行うことができますか? 渡された無限引数をどのように扱うことができますか?

どうやってやっているの?

4

4 に答える 4

55

func_get_argsあなたが望むことをします:

function infinite_parameters() {
    foreach (func_get_args() as $param) {
        echo "Param is $param" . PHP_EOL;
    }
}

特定のパラメーターを取得するために使用することもできfunc_get_argます (インデックスはゼロです)。

function infinite_parameters() {
    echo func_get_arg(2);
}

ただし、そのパラメーターがあることを確認するように注意してください。

function infinite_parameters() {
    if (func_num_args() < 3) {
        throw new BadFunctionCallException("Not enough parameters!");
    }
}

func_*_arg通常のパラメーターと組み合わせることもできます。

function foo($param1, $param2) {
    echo $param1; // Works as normal
    echo func_get_arg(0); // Gets $param1
    if (func_num_args() >= 3) {
        echo func_get_arg(2);
    }
}

ただし、それを使用する前に、本当に不定のパラメーターが必要かどうかを考えてください。配列では十分ではないでしょうか?

于 2012-08-28T18:09:42.253 に答える
2

を使用できfunc_get_args()ます。引数の配列が返されます。

function work_with_arguments() {
    echo implode(", ", func_get_args());
}

work_with_arguments("Hello", "World");
//Outputs: Hello, World
于 2012-08-28T18:09:35.143 に答える
1

関数内で呼び出すfunc_get_args()と、PHP に渡された引数の配列が返されます。

于 2012-08-28T18:09:38.203 に答える