单元数组数组中的组值按第二级键和每个组中的总和值

问题描述 投票:0回答:3

输入数组:

[
    [1 => 2],
    [1 => 2],
    [2 => 1],
    [3 => 1],
]

我想要这个输出:

[
    [1 => 4],
    [2 => 1],
    [3 => 1],
]
php arrays multidimensional-array sum grouping
3个回答
2
投票

看起来像是一个很好的案例:


array_reduce()

对于最终结果,我正在使用
$res = array_chunk(array_reduce($arr, function(&$current, $item) {
    foreach ($item as $key => $value) {
        if (!isset($current[$key])) {
            $current[$key] = 0;
        }
        $current[$key] += $value;
    }
    return $current;
}, []), 1, true);

;它采用一个数组并创建每个元素的单个元素子数组。


array_chunk()


1
投票
通过识别唯一的组并仅将引用推向结果数组,您可以避免在循环后重新索引结果。 demo

0
投票
$result = array(); foreach ($input as $subarray) { foreach ($subarray as $key => $value) { if (isset($result[$key])) { $result[$key][$key] += $value; } else { $result[$key] = array($key => $value); } } } $result = array_values($result); // Convert from associative array to indexed array

输出:

$result = []; foreach ($array as $row) { $k = key($row); if (!isset($ref[$k])) { $ref[$k] = 0; $result[][$k] =& $ref[$k]; } $ref[$k] += $row[$k]; } var_export($result);
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.