0

Google won't help me; I want to pass an array as an argument list to a function.

I can't edit the function itself, so I can't pass an array. It expects this:

function doSomething($arg1, $arg2, [$arg3...]) {
    //code...
}

And I have this:

$args = array('arg1', 'arg2', 'arg3'...);

How can I pass them anyway?

Martin
  • 16,093
  • 1
  • 29
  • 48

1 Answers1

1

You can use call_user_func_array.

Use like:

$array = array(1, 2, 3);
call_user_func_array("myfunc", $array);

function myfunc($a, $b, $c) {
    var_dump($a, $b, $c); // 1 2 3
}

$array = array(2, 3);
$first = 1;
call_user_func_array("myfunc", array_merge(arary($first), $array));

function myfunc($a, $b, $c) {
    var_dump($a, $b, $c); // 1 2 3
}

In case of an object instance your callback should look like:

array($obj, "someFunc")

so:

call_user_func_array(array($obj, "someFunc"), $array);
Halcyon
  • 57,230
  • 10
  • 89
  • 128