在PHP中将关联数组传递给函数

在PHP中将关联数组传递给函数,php,function,associative-array,Php,Function,Associative Array,我很想知道是否有办法使用关联数组来声明参数来调用函数 例如,如果我有此功能: function test($hello, $world) { echo $hello . $world; } 有什么方法可以称之为这样做吗 call('test', array('hello' => 'First value', 'world' => 'Second value')); 我熟悉使用call\u user\u func和call\u user\u func\u array,但我正

我很想知道是否有办法使用关联数组来声明参数来调用函数

例如,如果我有此功能:

function test($hello, $world) {
    echo $hello . $world;
}
有什么方法可以称之为这样做吗

call('test', array('hello' => 'First value', 'world' => 'Second value'));
我熟悉使用
call\u user\u func
call\u user\u func\u array
,但我正在寻找一些更通用的方法,当我不知道这些方法需要什么参数时,我可以使用它们来调用各种方法

编辑: 这样做的原因是为API前端创建一个接口。我接受JSON并将其转换为数组。因此,我希望调用不同的方法,并将JSON输入的值传递给这些方法。 因为我希望能够从这个接口调用各种不同的方法,所以我希望能够在不知道函数的顺序的情况下将参数传递给函数。我认为使用反射可以得到我想要的结果。

查看php手册了解更多信息

另外,查找令牌运算符(…)。这是一种在PHP中将varargs与函数一起使用的方法。您可以声明如下内容:-

function func( ...$params)
{
    echo $params[0] . ',' . parama[1];
}

您可以在内部函数中使用此函数

所以,你可以像这样使用它:

function test() {
     $arg_list = func_get_args();
     echo $arg_list[0].' '.$arg_list[1]; 
}

test('hello', 'world');

对于PHP5.4+,这是可行的

function test($assocArr){
  foreach( $assocArr as $key=>$value ){
    echo $key . ' ' . $value . ' ';
  }
}

test(['hello'=>'world', 'lorem'=>'ipsum']);

以下几点应该有用

function test($hello, $world) {
  echo $hello . $world;
}

$callback = 'test'; <-- lambdas also work here, BTW

$parameters = array('hello' => 'First value', 'world' => 'Second value');

$reflection = new ReflectionFunction($callback);
$new_parameters = array();

foreach ($reflection->getParameters() as $parameter) {
  $new_parameters[] = $parameters[$parameter->name];
}

$parameters = $new_parameters;

call_user_func_array($callback, $parameters);
功能测试($hello,$world){
回声$hello.$world;
}
$callback='test';'第一个值“,”世界“=>”第二个值“);
$reflection=新的ReflectionFunction($callback);
$new_参数=数组();
foreach($reflection->getParameters()作为$parameter){
$new_parameters[]=$parameters[$parameter->name];
}
$parameters=$new_参数;
调用用户函数数组($callback,$parameters);

您有什么理由要这样做吗?这是针对API前端的。我接受JSON并将其转换为数组。因此,我希望调用不同的方法,并将JSON输入的值传递给这些方法。