如果具有相同的日期,则计算元素的总和

Tan*_*Gio 2 php php-5.3

我有一个问题,我有这个数组:

Array
(
[0] => Array
    (
        [date] => 2015-07-07
        [nb] => 12
    )

[1] => Array
    (
        [date] => 2015-07-10
        [nb] => 6
    )

[2] => Array
    (
        [date] => 2015-07-07
        [nb] => 8
    )

[3] => Array
    (
        [date] => 2015-07-09
        [nb] => 48
    )

[4] => Array
    (
        [date] => 2015-07-09
        [nb] => 42
    )
 }
Run Code Online (Sandbox Code Playgroud)

但我想得到这个:

Array
(
 [0] => Array
  (
    [date] => 2015-07-07
    [nb] => 20
  )

 [1] => Array
  (
    [date] => 2015-07-09
    [nb] => 90
   )

 [2] => Array
  (
    [date] => 2015-07-10
    [nb] => 6
   )
 }
Run Code Online (Sandbox Code Playgroud)

这个想法是,如果在数组中存在多个日期[nb]必须加起来.

我试过这样的:

foreach($aTotalRows as $k=>$row){
  if($row[$k]['date'] == $row[$k+1]['date']){
    $row[$k]['nb'] = $row[$k]['nb'] + $row[$k+1]['nb'] 
  }
}
Run Code Online (Sandbox Code Playgroud)

但是不能解决这个问题,你能帮帮我吗?Thx提前

Mar*_*ker 7

不,这只有在你按日期排序时才有效....尝试构建类似的东西:

$aggregateArray = array();
foreach($aTotalRows as $row) {
    if(!array_key_exists($row['date'], $aggregateArray) {
        $aggregateArray[$row['date']] = 0;
    }
    $aggregateArray[$row['date']] += $row['nb'] 
}
Run Code Online (Sandbox Code Playgroud)

这将给你类似的东西:

Array(
    ['2015-07-07'] => 20
    ['2015-07-10'] => 90
    ['2015-07-11'] => 6
)
Run Code Online (Sandbox Code Playgroud)

然后你可以在必要时对其进行重组