ein Array von Argumenten in PHP Auspacken
-
08-07-2019 - |
Frage
Python bietet den „*“ Operator für eine Liste von Tupeln Auspacken und sie auf eine Funktion als Argumente geben, etwa so:
args = [3, 6]
range(*args) # call with arguments unpacked from a list
Dies entspricht:
range(3, 6)
Wer weiß, ob es einen Weg gibt diese in PHP zu erreichen? Einige Googeln für Variationen von „PHP auspacken“ hat alles, was nicht sofort aufgedreht .. vielleicht nennt man das etwas anderes in PHP?
Lösung
Sie können mit call_user_func_array()
das erreichen:
call_user_func_array("range", $args);
Ihr Beispiel zu verwenden.
Andere Tipps
In php5.6
der ...
Operator wurde hinzugefügt. Mit ihm können Sie loswerden call_user_func_array()
für diese einfachere Alternative zu bekommen. Zum Beispiel mit einer Funktion
function add($a, $b){
return $a + $b;
}
und Ihr Array $list = [4, 6];
(nach php5.5 Sie Arrays auf diese Weise erklären kann).
Sie können Ihre Funktion mit ...
nennen:
echo add(...$list);
Sie sollten die call_user_func_array verwenden
call_user_func_array(array(CLASS, METHOD), array(arg1, arg2, ....))
http://www.php.net/call_user_func_array
oder die Reflexion api verwenden http://www.php.net/oop5.reflection
In bestimmten Szenarien, könnte man mit unpacking
betrachten, die in PHP möglich ist, ist eine ähnliche Art und Weise zu Python:
list($min, $max) = [3, 6];
range($min, $max);
Dies ist, wie ich zu dieser Antwort zumindest angekommen sind.
Google-Suche: PHP argument unpacking