Question

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.

Was it helpful?

Solution

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

OTHER TIPS

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

<?php
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.

Documentation

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top