传递参数时PHP Altorouter中的意外行为

传递参数时PHP Altorouter中的意外行为,php,arrays,php-closures,altorouter,Php,Arrays,Php Closures,Altorouter,设置 我正在访问此url:/render/z63034/RBLR/GLZB 我的url模式是这样的:/render/[a:title]/[a:bpFrom]/[a:bpTo] 我的路线添加如下: $router->map("GET", "/render/[a:title]/[a:bpFrom]/[a:bpTo]", function ($params) { include __DIR__ . "/views/render.php"; }, "render"); 然后,调用如下所示: ca

设置

我正在访问此url:
/render/z63034/RBLR/GLZB

我的url模式是这样的:
/render/[a:title]/[a:bpFrom]/[a:bpTo]

我的路线添加如下:

$router->map("GET", "/render/[a:title]/[a:bpFrom]/[a:bpTo]", function ($params) { include __DIR__ . "/views/render.php"; }, "render");
然后,调用如下所示:

call_user_func_array($match['target'], $match['params']);
在我的
index.php
(其中所有请求都被路由到)中,
$match['params']
var_dump()

array(3) {
  ["title"]=>
  string(6) "z63034"
  ["bpFrom"]=>
  string(4) "RBLR"
  ["bpTo"]=>
  string(4) "GLZB"
}
在我的
render.php
(包括在内)中,
$params
var_dump()

string(6) "z63034"
问题


为什么只有我传递给
call\u user\u func\u array
的数组中的第一个元素才被实际传递(不是作为数组,而是作为值本身)?

注意
call\u user\u func\u array
$params
作为单个参数传递,我的意思是,在函数定义中,您必须声明与
$params
数组相同数量的参数

例如,如果您将其称为:

$params = array('Hello', 'World');
call_user_func_array(array($this,'test'), $params);
您的函数定义如下所示

 function test($a){
        echo $a; 
        echo $b; 
        echo '<br>';
    }
功能测试($a){
echo$a;
亿美元;
回声“
”; }
您将只打印“Hello”,因此您必须像这样声明您的函数

function test($a, $b){
        echo $a; 
        echo $b; 
        echo '<br>';
    }
功能测试($a,$b){
echo$a;
亿美元;
回声“
”; }

希望这会有所帮助

我最终使用了
call\u user\u func()
将参数数组作为数组传递。