6.4. Wie schreibe ich eine Funktion mit einer variablen Anzahl von Argumenten?Antwort von Kristian KöhntoppIn PHP kann man Funktionsparameter mit Default-Werten versehen. Läßt man die Argumente der Funktion von hinten nach vorne weg, werden stattdessen die Defaults eingesetzt. Defaultwerte müssen skalare Konstanten sein. Variable Ausdrücke (Variablen, Funktionsaufrufe) oder nichtskalare Werte (Arrays, Objekte) sind nicht gestattet. function beispiel($p = "default") { printf("Der Parameter p hat den Wert %s\n", $p); } beispiel("hallo"); beispiel(); Auf diese Weise kann man jedoch keine echten variadischen Funktionen schreiben. So ist es zum Beispiel nicht möglich eine Funktion wie printf() in PHP3 zu schreiben. Man kann variadische Funktionen jedoch durch die Übergabe eines Array- oder Hashparameters simulieren. function beispiel2($p) { if (!isset($p) or !is_array($p)) # Defaults setzen $p = array("para1" => "bla", "para2" => "fasel"); if ($p["para1"]) machdies(); if ($p["para2"]) machdas(); } beispiel2(array("para1" => "laber", "para2" => "lall")); Seit PHP4 sind auch echte variadische Funktionen möglich. Dort gibt es die drei Funktionen func_num_args()Diese Funktion liefert die Anzahl der Funktionsargumente als Integer. func_get_arg()Diese Funktion bekommt eine Argumentnummer als Parameter und liefert des Wert des Funktionsargumentes mit diesem Index zurück. func_get_args()Diese Funktion liefert alle Argumente einer Funktion als Array zurück. Eine echte variadische Funktion kann also in PHP4 folgendermaßen geschrieben werden: function beispiel3() { $args = func_get_args(); for($i=0; $i<count($args); $i++) { print($args[$i]."\n"); } } beispiel3("das", "ist", "ein", "test"); |
||
6.4. Wie schreibe ich eine Funktion mit einer variablen Anzahl von Argumenten? http://www.php-faq.de/q/q-funktion-variabel.html |
||
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team |