在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输入的值传递给这些方法。