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?

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top