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

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

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

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

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

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

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

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

Начиная с PHP 5.6 вы можете использовать токен « »

Пример:

 <?php function sum(...$numbers) { $acc = 0; foreach ($numbers as $n) { $acc += $n; } return $acc; } echo sum(1, 2, 3, 4); ?> 

Источник: http://php.net/manual/en/functions.arguments.php#functions.variable-arg-list

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

 function work_with_arguments() { echo implode(", ", func_get_args()); } work_with_arguments("Hello", "World"); //Outputs: Hello, World 

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