使用动态PHP变量列表调用函数

时间:2012-07-13 18:16:18

标签: php dynamic function-calls

假设我有功能:

<?php
function myFunction($param1, $param2, /*0 or more extra args*/) {
  // do something with $param1 & $param2
  $args = func_get_args();
  $other_args = array_slice($args, 2); // get the dynamic args
  // do something with $other_args
}
?>

这可以调用:

<?php
myFunction($param1, $param2); // or
myFunction($param1, $param2, $param3); // or
myFunction($param1, $param2, $param3, $param4);
?>

但是我想知道是否有可能采用一组args并将它们传递给函数,例如:

<?php
$extra_args = array($param3, $param4); // this could also be
$extra_args = array($param3, $param4, $param5); // or any length array
?>

我想将它们作为单独的参数传递给我的函数,例如

<?php
myFunction($param1, $param2 /* other args split up */);
?>

提前致谢!

2 个答案:

答案 0 :(得分:4)

Yeap - call_user_func_array()&#39;。

http://www.php.net/manual/en/function.call-user-func-array.php

采用两个参数 - 函数名称(作为字符串 - 或者可能在PHP&gt; = 5.3,匿名函数,不确定)和一系列参数。

或方法,forward_static_call_array()

http://www.php.net/manual/en/function.forward-static-call-array.php

PHP回答JS function.prototype.apply():)

答案 1 :(得分:1)

call_user_func_array('myFunction', 
    array_merge(
       array($param1,$param2),
       $extra_args));