Hey, ich habe mit einer PHP-Funktion gearbeitet, die mehrere Argumente benötigt und sie formatiert. Derzeit arbeite ich mit so etwas wie folgt aus:PHP alle Argumente als Array erhalten?
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);
}
Aber ich habe mich gefragt, ob ich eine Lösung wie diese verwenden:
function foo(params $args){
for ($i = 0; $i < count($args); $i++)
doSomethingWith($args[$i], $i + 1);
}
aber immer noch die Funktion die gleiche Art und Weise, ähnlich wie das Aufrufen params-Schlüsselwort in C# oder das Argumentarray in JavaScript.
Ein Gotcha mit func_get_args, die es wert ist, den Hinweis auf; Sie können es nicht in einen anderen Funktionsaufruf übergeben. – Rob
@Rob Sie können, wenn Sie gehen '$ args = func_get_args()' und dann 'call_user_func_array ($ func, $ args)' – alex
func_get_args() gibt nur die Werte der Parameter, die zum Funktionsaufruf übergeben wurden, nicht alle Parameter definiert in der Funktionsdefinition. –