Php 如何在addRoute语法中实现foreach循环?

Php 如何在addRoute语法中实现foreach循环?,php,Php,我正在从快速路由中间件创建路由器 // routes.php return [ ['GET', '/1', ['ShowMe','demo']], ['GET', '/2', ShowMe::class], ]; 如果我在simpleDispatcher的函数中手动包含此选项,则一切正常-两条路径都正常工作: // $r->addRoute('GET', '/ddd', ['ShowMe','demo']); // $r->addRoute('GET'

我正在从快速路由中间件创建路由器

// routes.php

return [
    ['GET', '/1', ['ShowMe','demo']],
    ['GET', '/2', ShowMe::class],
];
如果我在simpleDispatcher的函数中手动包含此选项,则一切正常-两条路径都正常工作

   // $r->addRoute('GET', '/ddd', ['ShowMe','demo']);
   // $r->addRoute('GET', '/ddd', ShowMe::class);
但是,如果我想从routes.php加载路由,我将使用以下代码:

foreach ($routes as $key => $route) {
   $r->addRoute($route[0], $route[1], [$route[2][0], $route[2][1]]);
  }
这项工作非常适合调用以下函数的路由: ['GET'、'/1'、['ShowMe'、'demo']

因此我进行了修改(因为我有两种路由类型,并且希望此语法同时支持这两种类型):

   $r->addRoute($route[0], $route[1], [implode(",", $route[2])]);
现在这两种路线都不起作用:

Warning: implode(): Invalid arguments passed in ...\index.php on line 69

Fatal error: Uncaught RuntimeException: Invalid request handler: array

您的
foreach
循环语法有错误 语法为
foreach($arrayName as$key=>$value)

其次,
infrade()
函数以字符串的形式返回数组,我想您可能不希望这样。 简单地说:

$r->addRoute($route[0], $route[1], $route[2]);

这应该是正确的语法吗?你为什么要爆炸?@Cid是的,这个语法是正确的。但是有两种类型的路由:'GET'、'/1'、['ShowMe,demo']和'GET'、'/2',ShowMe::class-这就是我内爆的原因。请注意,这不会给您预期的结果,因为内爆返回字符串,您的最后一个数组将只包含一个元素-使用类名添加路由的语法是什么?@Cid,我再次检查了这个问题。这是你$route的班级问题[2]。因此,这种方式工作完美!谢谢你的支持!谢谢你的回答。您的语法适用于第一种路由类型,但第二种路由类型有一个错误:致命错误:未捕获的运行时异常:无效的请求处理程序:objectI已再次检查。这是班级问题。因此,您的语法工作完美。谢谢你的支持。
$r->addRoute($route[0], $route[1], $route[2]);