4 Stimmen

Mehrere optionale Argumente in einer Funktion

getAllForms($data=null)

getAllForms() and getAllForms("data")

Das wird funktionieren. Aber ich möchte zwei optionale Argumente in einer Funktion wie dieser machen:

getAllForms($arg1=null,$arg2=null)

getAllForms() and getAllForms("data")

Wie kann ich das möglich machen?

11voto

Baba Punkte 91769

Sie können es versuchen:

function getAllForms() {
    extract(func_get_args(), EXTR_PREFIX_ALL, "data");
}

getAllForms();
getAllForms("a"); // $data_0 = a
getAllForms("a", "b"); // $data_0 = a $data_1 = b
getAllForms(null, null, "c"); // $data_0 = null $data_1 = null, $data_2 = c

6voto

Muthu Kumaran Punkte 17389

Sie können auch Folgendes versuchen func_get_arg die Sie weitergeben können n Anzahl der Argumente für eine Funktion.

http://php.net/manual/en/function.func-get-args.php

Ejemplo

function foo(){
    $arg_list = func_get_args();
    for ($i = 0; $i < $numargs; $i++) {
        echo "Argument $i is: " . $arg_list[$i] . "<br />\n";
    }
}

foo(1, 2, 3);

3voto

Versuchen Sie dies:

getAllForms($data=null,$data2=null)

und Sie rufen es in diesem Modus auf:

getAllForms()
getAllForms("data")
getAllForms("data","data2")

Das zweite Argument muss einen anderen Namen haben als das erste

1voto

noetix Punkte 4693

Sie haben bereits beschrieben, wie Sie es machen würden:

function getAllForms($arg1 = null, $arg2 = null)

Nur muss jeder Variablenname (auch der zweite) anders lauten.

1voto

Daan Timmer Punkte 14579
<? php
function getAllForms($data1 = null, $data2 = null)
{
    if ($data1 != null)
    {
        // do something with $data1
    }

    if ($data2 != null)
    {
        // do something with $data2
    }
}
?>

getAllForms();
getAllForms("a");
getAllForms(null, "b");
getAllForms("a", "b");

ou

<? php
function getAllForms($data = null)
{
    if (is_array($data))
    {
        foreach($data as $item)
        {
            getAllForms($item);
        }
    }
    else
    {
        if ($data != null)
        {
            // do something with data.
        }
    }
}

getAllForms();
getAllForms("a");
getAllForms(array("a"));
getAllForms(array("a", "b"));
?>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X