web-dev-qa-db-fra.com

PHP obtenir tous les arguments sous forme de tableau?

Hé, je travaillais avec une fonction PHP qui prend plusieurs arguments et les formate. Actuellement, je travaille avec quelque chose comme ceci:

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

Mais je me demandais si je pouvais utiliser une solution comme celle-ci:

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

Mais appelez toujours la fonction de la même manière, similaire au mot-clé params en C # ou au tableau d'arguments en JavaScript.

33
MiffTheFox

func_get_args renvoie un tableau avec tous les arguments de la fonction actuelle.

73
bb.

Si vous utilisez PHP 5.6+, vous pouvez maintenant le faire:

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

10
Joren

Ou à partir de PHP 7.1 vous pouvez maintenant utiliser un indice de type appelé iterable

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

En outre, il peut être utilisé à la place de Traversable lorsque vous itérez à l'aide d'une interface. De plus, il peut être utilisé comme un générateur qui fournit les paramètres.

Documentation

8
Thielicious