2009-07-19 13 views
1

Gibt es eine Möglichkeit, eine unbegrenzte Anzahl von Argumenten an eine Funktion zu übergeben und auf alle diese Argumente zuzugreifen, ohne jedes einzelne in der Überschrift definieren zu müssen. Hier ist ein Beispiel, um es klarer zu machen:Zugriff auf nicht definierte Argumente

Ich möchte nicht gehen müssen eine Reihe von Argumenten zu definieren. Gibt es eine Möglichkeit, alle Argumente in einem Array zu erfassen? Auch wenn sie nicht definiert wurden? (PHP BTW)

Das Endergebnis sollte wie folgt aussehen:

func("hello", "ya", "hi", "blah", "test", "go"); 

function func() 
{ 
    //Loop Over Arguments 
} 

Ich habe einige einheimischen gesehen PHP-Funktionen der Lage, eine scheinbar unendliche Anzahl von Argumenten zu akzeptieren, aber können benutzerdefinierte Funktionen tun das Gleiche?

Antwort

5

können Sie verwenden func_get_args, func_get_arg und func_num_args

Betrachtet man diese drei Variablen deklariert haben:

$param_1 = "A"; 
$param_2 = "B"; 
$param_3 = "C"; 

Hier ist ein erstes Beispiel, func_get_args Verwendung in einem Array, das alle Parameter zu erhalten:

my_function_1($param_1, $param_2, $param_3); 

function my_function_1() 
{ 
    $num_args = func_num_args(); 
    if ($num_args >= 1) { 
     $args = func_get_args(); 
     var_dump($args); 
    } 
} 

Und hier ist noch eins, um die Parameter eins nach dem anderen zu bekommen, mit func_get_arg:

my_function_2($param_1, $param_2, $param_3); 

function my_function_2() 
{ 
    $num_args = func_num_args(); 
    if ($num_args >= 1) { 
     $args = func_get_args(); 
     for ($i = 0 ; $i<$num_args ; $i++) { 
      var_dump(func_get_arg($i)); 
     } 
    } 
} 
3

Siehe func_get_args. Es macht genau das, was Sie wollen

+0

Danke, dass du so schnell reagierst. –

2

Ja, da ist definitiv. Schauen Sie sich func_get_args() an, es sollte genau das tun, was Sie brauchen.

0

Sie können herausfinden, wie viele Argumente die Funktion mit von using func_num_args() aufgerufen wurde. Sie können dann jedes Argument abrufen, indem Sie seinen Index mit func_get_arg(index) oder alle Argumente als Array angeben, indem Sie func_get_args() verwenden.

Beispiel:

function variable_arguments() { 
    echo "This function was called with ".func_num_args()." arguments.<br />"; 
    echo "Those arguments were:<br /><pre>"; 
    echo print_r(func_get_args()); 
    echo "</pre>"; 
} 

variable_arguments("Hello", 42, array(true)); 
0

Wie andere geschrieben haben, bevor Sie func_get_args() verwenden können, aber warum nicht versuchen, die Parameter in einem Array zu übergeben? PHP ist lose getippt, so dass Sie alles darin speichern können.

$params = array(1, 2, 'something'); 
doSomething($params); 

function doSomething($params) { 
    foreach ($params as $value) { 
    // do something. 
    } 
} 

ziehe ich das, weil es in den Entwickler sichtbar macht, die Sie Parameter für die Funktion erwarten und man kann noch so viele Parameter übergeben, wie Sie mit wenig Aufwand über die Paramter Array mögen.

Verwandte Themen