Php 将集合中的每个元素分配给数组中的多个元素
所以我有这个问题,我需要检索分配给每个事件的所有路由。我有一个事件模型,通过查询生成器,我将检索这些事件的集合 每个事件(只有5个)都有一个tournamentkey属性(字符串),如下所示:Php 将集合中的每个元素分配给数组中的多个元素,php,laravel,Php,Laravel,所以我有这个问题,我需要检索分配给每个事件的所有路由。我有一个事件模型,通过查询生成器,我将检索这些事件的集合 每个事件(只有5个)都有一个tournamentkey属性(字符串),如下所示: $event->tournamentkey $eventRoutes = [ 'events/{tournamentKey}/home', 'events/{tournamentKey}/tournament-info', '
$event->tournamentkey
$eventRoutes = [
'events/{tournamentKey}/home',
'events/{tournamentKey}/tournament-info',
'events/{tournamentKey}/teams',
'events/{tournamentKey}/schedule-and-results',
'events/{tournamentKey}/standings',
'events/{tournamentKey}/stats/general',
'events/{tournamentKey}/editions'
];
另一方面,我有一系列静态路由,如下所示:
$event->tournamentkey
$eventRoutes = [
'events/{tournamentKey}/home',
'events/{tournamentKey}/tournament-info',
'events/{tournamentKey}/teams',
'events/{tournamentKey}/schedule-and-results',
'events/{tournamentKey}/standings',
'events/{tournamentKey}/stats/general',
'events/{tournamentKey}/editions'
];
我想检索一个包含每个$eventRoutes的路由数组。
我不知道我是否解释得很好,但最终结果应该是35条路线,每个事件7条路线(总共5个事件)。
现在我的代码是这样的,但它只返回一个包含5条路由的数组,每个事件只返回第一条路由
$eventRoutes = [
'events/{tournamentKey}/home',
'events/{tournamentKey}/tournament-info',
'events/{tournamentKey}/teams',
'events/{tournamentKey}/schedule-and-results',
'events/{tournamentKey}/standings',
'events/{tournamentKey}/stats/general',
'events/{tournamentKey}/editions'
];
$eventMenuItems = collect();
$events = Event::whereFederationId($federationId)->get();
$events->each(function ($event) use ($eventRoutes, &$eventMenuItems) {
foreach ($eventRoutes as $route) {
$newRoutes = str_replace('{tournamentKey}', $event->tournamentkey, $route);
$eventMenuItems->push($newRoutes);
return $eventMenuItems;
}
});
当然,我做错了什么,但我正在努力找出原因。您通过从
foreach
循环返回来结束匿名回调。因此我应该将返回$eventMenuItems放在foreach的外部,每个内部,对吗?我不知道我是否正确地表达了我自己,我不确定你是否需要它,因为你通过引用传递数组(我不太熟悉Laravel的功能)。但是如果有必要的话,它应该放在循环之后。是的,它起作用了。。这么愚蠢的错误。。。非常感谢:)