2015-02-07 2 views
0

У меня есть этот массив:PHP Group и добавить элементы в массиве

Array(
[0] => Array(
[type] => 
[base] => 10.0 
[amount] => 0 
) 
[1] => Array(
[type] => 15.0 
[base] => 12.0 
[amount] => 1.8 
) 
[2] => Array(
[type] => 15.0 
[base] => 12.0 
[amount] => 1.8 
) 
[3] => Array(
[type] => 2.0 
[base] => 12.0 
[amount] => 0.24 
) 

Как я могу получить ниже массив с PHP? Мне нужно группировать «типов» добавление «количество» & «количество», но без элементов без значения типа

Array(
[0] => Array(
[type] => 15.0 
[base] => 24.0 
[amount] => 3.6 
) 
[1] => Array(
[type] => 2.0 
[base] => 12.0 
[amount] => 0.24 
) 
) 
+0

Вы действительно группировки или просто привязав опустить их? Например, что произойдет, если у вас есть несколько массивов с тем же значением 'type', но с разными значениями' amount'? – prodigitalson

ответ

1

array_reduce приходит на помощь:

$result = array_reduce($array, function($memo, $item) { 
    if (!isset($item['type'])) return $memo; 
    if (!isset($memo['' . $item['type']])) { // first occurence 
     $memo['' . $item['type']] = $item; 
    } else {         // will sum 
     $memo['' . $item['type']]['base'] += $item['base']; 
     $memo['' . $item['type']]['amount'] += $item['amount']; 
    } 
    return $memo; 
}, array()); 

var_dump(array_values($result)); 
Смежные вопросы