按键对多维数组求和

时间:2016-07-26 13:11:55

标签: php arrays multidimensional-array

我在SO上已经阅读了很多答案但是还没有能够解决这个问题。

我有多维数组,如下所示:

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

我想根据以单个数组结尾的键来对值进行求和,如:

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

尝试

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

但这只返回了所有值的总和。

任何帮助表示感谢。

2 个答案:

答案 0 :(得分:0)

我想它应该是:

foreach ($array as $subArray) {
    $sumArray[$subArray[0]] += $subArray[1];
}

答案 1 :(得分:0)

尝试:

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

输出:

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