2013-01-01 118 views
1

是否可以通过数组计算数组?按数组计算数组

例如,计算[num][price]的总和各为[group]

Array 
(
    [0] => Array 
     (
      [group] => Apple 
      [num] => 5 
      [price] => 10 
     ) 

    [1] => Array 
     (
      [group] => Apple 
      [num] => 2 
      [price] => 8 
     ) 

    [2] => Array 
     (
      [group] => Orange 
      [num] => 4 
      [price] => 6 
     ) 

    [3] => Array 
     (
      [group] => Orange 
      [num] => 12 
      [price] => 24 
     ) 

) 

而结果会是这样:

Array 
(
    [0] => Array 
     (
      [group] => Apple 
      [num] => 7 
      [price] => 18 
     ) 

    [1] => Array 
     (
      [group] => Orange 
      [num] => 16 
      [price] => 30 
     ) 
) 
+1

LOOP在数组并总结。 –

+1

如果这个值来自表格,那么在获取它时必须进行计算。 –

回答

2

简单的循环和assocative阵列将做的工作:

$result = Array(); 
foreach($array as $row) { 
    if(!isset($result[ $row['group'] ])) { 
     $result[ $row['group'] ] = $row; 
     continue ; 
    } 
    $result[ $row['group'] ]['num'] += $row['num']; 
    $result[ $row['group'] ]['price'] += $row['price']; 
} 
$result = array_values($result); 
+0

谢谢!这工作很棒! – chloe

1

使用array_reduce()

$reduced = array_reduce($array, function(&$result, $item){ 
    $result[$item['group']]['num'] += $item['num']; 
    $result[$item['group']]['price'] += $item['price']; 
    return $result; 
}); 
+0

谢谢!这工作很好,看起来很复杂。 – chloe