【发布时间】:2018-07-31 00:01:18
【问题描述】:
我有 10 个(以下示例中使用了 3 个)集合,我需要按键合并,但需要对这些值求和。我的收藏是这样的:
[
'key1' => ['value1' => 5, 'value2' => 3, 'value3' => 0],
'key2' => ['value1' => 1, 'value2' => 6, 'value3' => 2],
'key3' => ['value1' => 0, 'value2' => 0, 'value3' => 1],
]
[
'key1' => ['value1' => 3, 'value2' => 1, 'value3' => 7],
'key2' => ['value1' => 1, 'value2' => 3, 'value3' => 2],
'key3' => ['value1' => 1, 'value2' => 6, 'value3' => 1],
]
[
'key1' => ['value1' => 2, 'value2' => 3, 'value3' => 9],
'key2' => ['value1' => 3, 'value2' => 8, 'value3' => 3],
'key3' => ['value1' => 1, 'value2' => 0, 'value3' => 6],
]
我想获得一个结果如下所示的集合:
[
'key1' => ['value1' => 10, 'value2' => 7, 'value3' => 16],
'key2' => ['value1' => 5, 'value2' => 17, 'value3' => 7],
'key3' => ['value1' => 2, 'value2' => 6, 'value3' => 8],
]
我是否缺少内置的 Laravel Collection 方法,或者实现此目的的最佳方法是什么?
编辑:(更多信息)这些值始终是数字。任何集合中都没有字符串值。
edit2:有些人问我试过什么。我已经试过了:
$merged = [];
foreach ($seeds as $seed) {
foreach ($seed as $location => $values) {
foreach ($values as $key => $value) {
$merged[$location][$key] = $value + ($merged[$location][$key] ?? 0);
}
}
}
我只是想知道是否有更简洁的方法来实现相同的目标,而不是使用 3 个 foreach 循环。
【问题讨论】:
-
你真的尝试过什么吗?你走了多远,你尝试了什么?
-
您能向我们展示您为实现这一目标所做的努力吗?
-
@Option 查看我的编辑
-
@rahulsm 查看我的编辑
标签: php arrays laravel collections