PHP:数组到变量函数参数值

时间:2009-11-24 23:50:35

标签: php arrays function params

我有一个可变长度数组,我需要将其转换为函数的参数列表。

我希望有一种巧妙的方法 - 但我看不出如何。

我正在编写的代码将调用类中的方法 - 但我不知道方法的名称,也不知道它有多少参数。

我试过这个 - 但它不起作用:

$params = array(1 => "test", 2 => "test2", 3 => "test3");
ClassName::$func_name(implode($params, ","));

以上将所有值都归为函数的第一个参数。而它应该调用具有3个参数值的函数(test,test2,test3)。

我需要的是:

ClassName::$func_name("test", "test2", "test3");

任何想法如何整齐地做到这一点?

2 个答案:

答案 0 :(得分:27)

是的,请使用call_user_func_array()

call_user_func_array('function_name', $parameters_array);

您也可以使用它来调用类中的方法:

class A {
  public function doStuff($a, $b) {
    echo "[$a,$b]\n";
  }
}

$a = new A;
call_user_func_array(array($a, 'doStuff'), array(23, 34));

答案 1 :(得分:-2)

您可以使用eval

  eval("$func_name(" . implode($params, ",") . ");");

虽然你可能需要做一些lambda技巧来引用和/或转义你的参数:

  $quoted_escaped_params = array_map(create_function('$a', 'return "\"". str_replace("\"",` "\\\"", $a) . "\""'), $params);