如何合并并求和具有相同键的简单Laravel Collections?
多个同键Laravel Collection对应值求和实现
我有三个键名相同、对应数值不同的Laravel Collections,需要将它们的对应键值求和。示例如下:
$broadInventory = collect(['horse' => 300, 'cow' => 400, 'entropy' => 400]); $ericaInventory = collect(['horse' => 10, 'cow' => 20, 'entropy' => 30]); $johnsonInventory = collect(['horse' => 5, 'cow' => 9, 'entropy' => 3]);
期望得到的结果为:
collect(['horse' => 315, 'cow' => 429, 'entropy' => 433]);
本以为操作很简单,实际却比预想的难!
编辑:感谢Abdulla的帮助,我最终写出了如下实现代码:
private function sumCollections(Collection ...$collections) { $merge = collect($collections); $keys = $collections[0]->keys(); return $merge->pipe( static function ($item) use ($keys) { return collect([ $keys->mapWithKeys(fn($key) => [$key => $item->sum($key)]) ]); } ); }
内容的提问来源于stack exchange,提问作者Jason Tangson
相关产品推荐
相关产品推荐

