PHP function with unlimited number of parameters PHP function with unlimited number of parameters php php

PHP function with unlimited number of parameters


Have you taken a look at func_get_args, func_get_arg and func_num_args

So for example:

function foo(){    if ( func_num_args() > 0 ){        var_dump(func_get_args());    }}

or:

function bind_param(){    if ( func_num_args() <= 1 ){        return false; //not enough args    }    $format = func_get_arg(0)    $args = array_slice(func_get_args(), 1)    //etc}

EDIT
Regarding Ewan Todds comment:
I don't have any knowlege of the base API you are creating the wrapper for, but another alternative may be to do something with chaining functions so your resulting interface looks something like:

$var->bind()->bindString($code)            ->bindString($language)            ->bindString($official)            ->bindDecimal($percent);

Which I would prefer over the use of func_get_args as the code is probably more readable and more importantly less likely to cause errors due to the the lack of a format variable.


Previously you should have used func_get_args(), but in the php 5.6, you can use ... operator.

So for example you can write the function which returns you a sum of all the numbers, sent to the function:

function bind_param(...$params){   var_dump($params);}

Your params is actually an array of all elements.


If you are using PHP 5.6 or later version, argument lists may include the ... token to denote that the function accepts a variable number of arguments. The arguments will be passed into the given variable as an array; Simply Using ... you can access unlimited variable arguments.

for example:

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

If you are using PHP version <= 5.5 then you can access unlimited parameterusing the func_num_args(), func_get_arg(), and func_get_args() functions.

For example:

<?phpfunction foo(){    $numargs = func_num_args();    echo "Number of arguments: $numargs \n";    if ($numargs >= 2) {        echo "Second argument is: " . func_get_arg(1) . "\n";    }    $arg_list = func_get_args();    for ($i = 0; $i < $numargs; $i++) {        echo "Argument $i is: " . $arg_list[$i] . "\n";    }}foo(1, 2, 3);?>