Home » Php » PHP get all arguments as array?

PHP get all arguments as array?

Posted by: admin April 23, 2020 Leave a comment


Hey, I was working with a PHP function that takes multiple arguments and formats them. Currently, I’m working with something like this:

function foo($a1 = null, $a2 = null, $a3 = null, $a4 = null){
    if ($a1 !== null) doSomethingWith($a1, 1);
    if ($a2 !== null) doSomethingWith($a2, 2);
    if ($a3 !== null) doSomethingWith($a3, 3);
    if ($a4 !== null) doSomethingWith($a4, 4);

But I was wondering if I can use a solution like this:

function foo(params $args){
    for ($i = 0; $i < count($args); $i++)
        doSomethingWith($args[$i], $i + 1);

But still invoke the function the same way, similar to the params keyword in C# or the arguments array in JavaScript.

How to&Answers:

func_get_args returns an array with all arguments of the current function.


If you use PHP 5.6+, you can now do this:

function 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


Or as of PHP 7.1 you are now able to use a type hint called iterable

function f(iterable $args) {
    foreach ($args as $arg) {
        // awesome stuff

Also, it can be used instead of Traversable when you iterate using an interface. As well as it can be used as a generator that yields the parameters.