duandongji2231 2016-07-26 13:11
浏览 48
已采纳

按键对多维数组求和

I have read a lot of answers here on SO but havent been able to sort this out.

I have multidimensional array that looks like this:

Array

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

[1] => Array
    (
        [0] => IT-82
        [1] => 14
    )

[2] => Array
    (
        [0] => IT-21
        [1] => 5
    )

[3] => Array
    (
        [0] => IT-82
        [1] => 7
    )

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

[5] => Array
    (
        [0] => IT-21
        [1] => 4
    )

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

[7] => Array
    (
        [0] => IT-21
        [1] => 3
    )

[8] => Array
    (
        [0] => IT-72
        [1] => 7
    )

[9] => Array
    (
        [0] => IT-75
        [1] => 22
    )

[10] => Array
    (
        [0] => IT-75
        [1] => 3
    )
)

I would like to sum the values according to the keys ending with a single array like:

Array 
(
      => 661
IT-82 => 21
IT-21 => 12
IT-82 => 12
IT-72 => 7
IT-75 => 25
)

Tried with

foreach ($array as $k=>$subArray) {
    foreach ($subArray as $id=>$value) {
        $sumArray[$id]+=$value;
    }
}

but this only returned the sum of all the values.

Any help appreciated.

  • 写回答

2条回答 默认 最新

  • dtp0760 2016-07-26 13:20
    关注

    Try:

    $sumArray = array();
    foreach ($array as $k=>$subArray) { //loop through array
      if(isset($sumArray[$subArray[0]]))
        $sumArray[$subArray[0]] += $subArray[1]; // set 0th index as key and 1st as value and add value to current index
      else 
        $sumArray[$subArray[0]] = $subArray[1];
    }
    print_r($sumArray);
    

    Output:

    Array
    (
        [] => 661
        [IT-82] => 21
        [IT-21] => 12
        [IT-72] => 7
        [IT-75] => 25
    )
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大