2016-05-30 9 views
2

Ich muss call_user_func_array verwenden, aber mein Array ist zu groß, aus der Dokumentation habe ich nur Array-Werte in der Argumentliste verwenden. Gibt es keine Möglichkeit, das gleiche Array als Argument der Callback-Funktion zu verwenden.Argument von call_user_func_array in PHP

mixed call_user_func_array (callable $callback , array $param_arr) 

Mein Code:

echo call_user_func_array("myFirstFunction" , array("1" , "2" , "3")); 

function myFirstFunction($arg1, $arg2, $arg3){ 
    return $arg1 . $arg2 . $arg3; 
} 

Meine Frage ist, wenn ich Array mit 50 oder mehr Werte als wie diese Funktion nutzen zu können?

+0

Warum wollen Sie verwenden müssen 'call_user_ func_array'? –

+0

übergeben Sie ein Array an eine Funktion. –

Antwort

1

Verwenden func_get_args

echo call_user_func_array("myFirstFunction" , array("1" , "2" , "3")); 

function myFirstFunction(){ 
    $arguments = func_get_args(); //Now, $arguments is an array, you can process further 
    return implode("", $arguments); 
} 

Ergebnis:

123 

Demo

+0

Danke, es funktioniert für mich. –

+0

für php7 siehe http://docs.php.net//functions.arguments#functions.variable-arg-list. Aber wenn Sie wirklich 50+ Werte an eine Funktion übergeben wollen/müssen, ist ein Array/Iterator als Parameter sowieso nicht besser? – VolkerK

+0

Hallo Herr, hätten Sie einen Vorschlag dafür? –

0

können Sie verwenden auch array_reduce:

<?php 

echo array_reduce(['1', '2', '3'], "myFirstFunction"); 

function myFirstFunction($prev, $arg){ 
    return $prev . $arg; 
} 
+0

Haben Sie eine Erklärung dafür? Ich weiß wirklich nicht, wie das mein Problem löst. –

+0

array_reduce reduziert das Array mithilfe der Callback-Funktion myFirstFunction auf einen einzelnen Wert. –

+0

Dies ist unter der Annahme, dass die Reduzierung des Arrays den Bedürfnissen des OP entspricht. Von der eher generischen Frage (die zumindest in mir die generische Antwort "Just Do not" auslöst ;-)) wissen wir nicht, was eigentlich benötigt wird. – VolkerK

Verwandte Themen