Подтвердить что ты не робот

Как работать с аргументами бесконечности в функции (например, PHP isset())

Вы знаете, как PHP isset() может принимать несколько (без ограничений) аргументов?

Как я могу сделать:

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

Как я смогу сделать это в своей собственной функции? Как я могу работать с аргументами бесконечности?

Как они это делают?

4b9b3361

Ответ 1

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);
    }
}

Но прежде чем использовать его, подумайте, действительно ли вы хотите иметь неопределенные параметры. Не хватит ли массива?

Ответ 3

Вы можете использовать func_get_args(), он вернет массив аргументов.

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

work_with_arguments("Hello", "World");
//Outputs: Hello, World

Ответ 4

Вызов func_get_args() внутри вашей функции вернет массив аргументов, переданных PHP.