How to work with infinity arguments in a function (like PHP's isset()) [duplicate]
func_get_args
will do what you want:
function infinite_parameters() { foreach (func_get_args() as $param) { echo "Param is $param" . PHP_EOL; }}
You can also use func_get_arg
to get a specific parameter (it's zero-indexed):
function infinite_parameters() { echo func_get_arg(2);}
But be careful to check that you have that parameter:
function infinite_parameters() { if (func_num_args() < 3) { throw new BadFunctionCallException("Not enough parameters!"); }}
You can even mix together func_*_arg
and regular parameters:
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); }}
But before using it, think about whether you really want to have indefinite parameters. Would an array not suffice?
Starting with PHP 5.6 you can use the token "..."
Example:
<?phpfunction sum(...$numbers) { $acc = 0; foreach ($numbers as $n) { $acc += $n; } return $acc;}echo sum(1, 2, 3, 4);?>
Source:http://php.net/manual/en/functions.arguments.php#functions.variable-arg-list
You can use func_get_args()
, it will return an array of arguments.
function work_with_arguments() { echo implode(", ", func_get_args());}work_with_arguments("Hello", "World");//Outputs: Hello, World