简体   繁体   English

显示具有相同键的两个数组值的总和

[英]Display a sum of two array values with same keys

I have two array with same keys this two array contain month wise data of my table. 我有两个具有相同键的数组,这两个数组包含我的表的月份数据。 i want sum of this values and return same keys sum of values in one other array 我想要这个值的总和,并在另一个数组中返回相同的键值

Here is my two array 这是我的两个数组

array1 数组1

Array ( [0] => Array ( [0] => Jan [1] => 0 ) 
        [1] => Array ( [0] => Feb [1] => 22 ) 
        [2] => Array ( [0] => Mar [1] => 0 ) 
        [3] => Array ( [0] => Apr [1] => 9 ) 
        [4] => Array ( [0] => May [1] => 1 ) 
        [5] => Array ( [0] => Jun [1] => 0 ) 
        [6] => Array ( [0] => Jul [1] => 0 ) 
        [7] => Array ( [0] => Aug [1] => 0 ) 
        [8] => Array ( [0] => Sep [1] => 0 ) 
        [9] => Array ( [0] => Oct [1] => 0 ) 
        [10] => Array ( [0] => Nov [1] => 0 ) 
        [11] => Array ( [0] => Dec [1] => 0 ) 
    )

array 2: 数组2:

Array ( [0] => Array ( [0] => Jan [1] => 0 ) 
        [1] => Array ( [0] => Feb [1] => 0 ) 
        [2] => Array ( [0] => Mar [1] => 18 ) 
        [3] => Array ( [0] => Apr [1] => 1 ) 
        [4] => Array ( [0] => May [1] => 1 ) 
        [5] => Array ( [0] => Jun [1] => 0 ) 
        [6] => Array ( [0] => Jul [1] => 0 ) 
        [7] => Array ( [0] => Aug [1] => 0 ) 
        [8] => Array ( [0] => Sep [1] => 0 ) 
        [9] => Array ( [0] => Oct [1] => 0 ) 
        [10] => Array ( [0] => Nov [1] => 0 ) 
        [11] => Array ( [0] => Dec [1] => 0 ) 
    )

i also tried using this code 我也尝试过使用这段代码

function sum_arrays($array1, $array2) {
    $array = array();
    foreach($array1 as $index => $value) {
        $array[$index] = isset($array2[$index]) ? $array2[$index] + $value : $value;
    }
    return $array;
}

i want result like below 我想要下面的结果

Array ( [0] => Array ( [0] => Jan [1] => 0 ) 
        [1] => Array ( [0] => Feb [1] => 22 ) 
        [2] => Array ( [0] => Mar [1] => 18 ) 
        [3] => Array ( [0] => Apr [1] => 10 ) 
        [4] => Array ( [0] => May [1] => 2 ) 
        [5] => Array ( [0] => Jun [1] => 0 ) 
        [6] => Array ( [0] => Jul [1] => 0 ) 
        [7] => Array ( [0] => Aug [1] => 0 ) 
        [8] => Array ( [0] => Sep [1] => 0 ) 
        [9] => Array ( [0] => Oct [1] => 0 ) 
        [10] => Array ( [0] => Nov [1] => 0 ) 
        [11] => Array ( [0] => Dec [1] => 0 ) 
    )

Using The foreach Loop: 使用foreach循环:

$sum = 0;

foreach($items as $item) {
    $sum += $item['qty'];
}

echo $sum;

Using array_map(): 使用array_map():

echo array_sum(array_map(
    function($item) {
        return $item['qty'];
    }, $items)
);

Using array_reduce(): 使用array_reduce():

echo array_reduce($items, function($carry, $item) {
    $carry += $item['qty'];
    return $carry;
});

array_map approach (if 2 arrays have month items in same order): array_map方法(如果2个数组具有相同顺序的月份项):

// shortened array samples
$arr1 = [
    ["Jan", 0],
    ["Feb", 22],
    ["Mar", 0]
];

$arr2 = [
    ["Jan", 0],
    ["Feb", 0],
    ["Mar", 18]
];

$result = array_map(function($a, $b){
    return [$a[0], $a[1] + $b[1]];
}, $arr1, $arr2);

print_r($result);

The output: 输出:

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

    [1] => Array
        (
            [0] => Feb
            [1] => 22
        )

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM