Associative array, sum values of the same key Associative array, sum values of the same key arrays arrays

Associative array, sum values of the same key


You can try

$data = array(  0 => array(    'event' => 'Conference',    'budget' => 3700,  ),  1 => array(    'event' => 'Conference',    'budget' => 500,  ),  2 => array(    'event' => 'Showroom',    'budget' => 1000,  ),  3 => array(    'event' => 'Mission Chez client',    'budget' => 2000,  ),  4 => array(    'event' => 'Séminaire',    'budget' => 700,  ),  5 => array(    'event' => 'Livraison',    'budget' => 4000,  ),  6 => array(    'event' => 'Conference',    'budget' => 334,  ),);$sum = array_reduce($data, function ($a, $b) {    isset($a[$b['event']]) ? $a[$b['event']]['budget'] += $b['budget'] : $a[$b['event']] = $b;      return $a;});print_r(array_values($sum));

Output

Array(    [0] => Array        (            [event] => Conference            [budget] => 4534        )    [1] => Array        (            [event] => Showroom            [budget] => 1000        )    [2] => Array        (            [event] => Mission Chez client            [budget] => 2000        )    [3] => Array        (            [event] => Séminaire            [budget] => 700        )    [4] => Array        (            [event] => Livraison            [budget] => 4000        ))


A simple suggestion:

$results = array();foreach ($budgetByEventTemp as $value){  if( ! isset($results[$value['event']]) )  {     $results[$value['event']] = 0;  }  $results[$value['event']] += $value['budget'];}var_dump($results);

Update according to comments

You can run over them again:

foreach($results as $key => $value){  $structured_results[] = array('event' => $key, 'budget' => $value);}var_dump($structured_results);


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