【问题标题】:Display a sum of two array values with same keys显示具有相同键的两个数组值的总和
【发布时间】:2017-05-15 02:19:05
【问题描述】:

我有两个具有相同键的数组,这两个数组包含我的表的月份数据。我想要这些值的总和,并在另一个数组中返回相同的键值总和

这是我的两个数组

数组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 ) 
    )

数组 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 ) 
    )

我也尝试过使用此代码

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

我想要如下结果

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 ) 
    )

【问题讨论】:

  • 请提供您尝试过的代码。获得好答案的艺术在于提出好问题

标签: php


【解决方案1】:

array_map 方法(如果 2 个数组具有相同顺序的 month 项):

// 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);

输出:

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

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

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

【讨论】:

  • 不,兄弟...这不是工作事件我有相同的键..它会产生两次相同数组值之和的结果,如果我的行军键是 18,那么它返回我 36
  • @Kiransuthar,不可能这样。否则,您发布了一些其他数组,但不是实际的
  • 我的朋友我已经发布了..实际我的数组..请检查我的问题@romanperekhrestut
  • @Kiransuthar,看看我前 3 个月的输出
  • 是的,我的朋友,它正在工作..对不起......也非常感谢您的最佳回复
【解决方案2】:

使用 foreach 循环:

$sum = 0;

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

echo $sum;

使用 array_map():

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

使用 array_reduce():

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
  • 2019-11-18
  • 1970-01-01
  • 1970-01-01
  • 2019-07-12
  • 2014-03-12
相关资源
最近更新 更多