PHP få alle argumenter som array?

stemmer
26

Hei, jeg jobbet med en PHP-funksjon som tar flere argumenter og formaterer dem. For tiden jobber jeg med noe sånt som dette:

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

Men jeg lurte på om jeg kan bruke en løsning som dette:

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

Men fortsatt påberope funksjonen på samme måte, ligner på params søkeord i C # eller argumenter array i Javascript.

Publisert på 06/05/2009 klokken 08:59
kilden bruker
På andre språk...                            


3 svar

stemmer
62

func_get_args returnerer en matrise med alle argumenter i den aktuelle funksjonen.

Svarte 06/05/2009 kl. 09:04
kilden bruker

stemmer
6

Hvis du bruker PHP 5.6+, kan du nå gjøre dette:

<?php
function sum(...$numbers) {
    $acc = 0;
    foreach ($numbers as $n) {
        $acc += $n;
    }
    return $acc;
}

echo sum(1, 2, 3, 4);
?>

kilde: http://php.net/manual/en/functions.arguments.php#functions.variable-arg-list

Svarte 16/04/2015 kl. 10:05
kilden bruker

stemmer
6

Eller som av PHP 7.1 du er nå i stand til å bruke en type hint kaltiterable

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

Dessuten kan den brukes i stedet for Traversablenår du gjenta via et grensesnitt. Så vel som det kan brukes som en generator som gir parametrene.

dokumentasjon

Svarte 05/12/2016 kl. 13:40
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more