PHP: Array to variable function parameter values

▼魔方 西西 提交于 2019-12-05 12:30:00

问题


I have a variable length array that I need to transpose into a list of parameters for a function.

I hope there is a neat way of doing this - but I cannot see how.

The code that I am writing will be calling a method in a class - but I will not know the name of the method, nor how many parameters it has.

I tried this - but it doesn't work:

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

The above lumps all of the values into the first parameter of the function. Whereas it should be calling the function with 3 parameter values (test, test2, test3).

What I need is this:

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

Any ideas how to do this neatly?


回答1:


Yes, use call_user_func_array():

call_user_func_array('function_name', $parameters_array);

You can use this to call methods in a class too:

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

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



回答2:


You could use eval:

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

Though you might need to do some lambda trickery to get your parameters quoted and/or escaped:

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


来源:https://stackoverflow.com/questions/1793782/php-array-to-variable-function-parameter-values

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!