如何根据键对数组值求和?

时间:2014-03-26 07:54:46

标签: php arrays

第一个数组

Array
(
    [0] => Array
        (
            [1] => 2
        )

    [1] => Array
        (
            [1] => 2
        )

    [2] => Array
        (
            [2] => 1
        )

    [3] => Array
        (
            [3] => 1
        )

)

我想输出

 Array
(
    [0] => Array
        (
            [1] => 4
        )



    [1] => Array
        (
            [2] => 1
        )

    [2] => Array
        (
            [3] => 1
        )

)

我该怎么做?

2 个答案:

答案 0 :(得分: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 :(得分:1)

$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