为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 Laravel PHP 中的数组中删除一层嵌套

如何从 Laravel PHP 中的数组中删除一层嵌套

PHP
莫回无 2021-08-28 16:14:55
我有一个我希望优化的过程:我有以下数组$journeys = [    [        'journey_id' => '123',        'stops' => [            'lon' => '123123123',            'lat' => '123123123',            'stop_name' => 'foobar st'         ]         ...    ]    ...]    该数组包含 1,000 条行程,每个行程在停靠点数组中包含大约 40-50 个停靠点。我想要做的是删除嵌套,所以我最终得到这样的结果:'stops' => [    'journey_id' => '123',    'lon' => '123123123',    'lat' => '123123123',    'stop_name' => 'foobar st']目前我能想到的唯一方法是循环遍历数组中的每个项目,然后每次停止并创建一个新数组。像这样:$stops = [];foreach($journeys as $journey){    foreach($journey['stops'] as $stop){        array_push($stops, [            'journey_id' => $journey['journey_id'],            'lon' => '123123123',            'lat' => '123123123',            'stop_name' => 'foobar st'        ])    }    }这个过程很慢!有谁知道我可以更快地做到这一点?我使用 Laravel,所以集合是可用的,尽管我尝试过,但似乎并没有更快。
查看完整描述

2 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

你可以收集它,然后在上面映射,像这样:


$stops = collect($journeys)->map(function($v, $k){

                return $v['stops'];

         }); 

您还可以使用 array_map,以防收集不适合您。


查看完整回答
反对 回复 2021-08-28
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

您可以通过使用添加$journeys到集合并使用->map()集合方法来映射应如何返回数据来实现此目的:


$journeys = collect($journeys)->map(function ($journey, $key) {

    $journey['stops']['journey_id'] = $journey['journey_id'];

    unset($journey['journey_id']);

    return $journey;

})->all();

在这里,我们创建了一个旅程集合。我们遍历每个旅程,添加journey_id到stops数组中,并取消设置原始journey_id.


然后使用->all().


注意:如果使用 laravel eloquent 模型,请使用$journeys->map(...)它,因为它已经是一个集合实例。


查看完整回答
反对 回复 2021-08-28
  • 2 回答
  • 0 关注
  • 172 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信