Ассоциативный массив, значения суммы одного и того же ключа

Итак, у меня есть этот ассоциативный массив (сброс с кинтом)

сброс с Кинтом d

Вместо того, чтобы повторять три раза «Концерт». Я хочу иметь его только один раз и суммировать 3 значения в одном, чтобы иметь что-то вроде:

Конференция: 4534

И то же самое для всех остальных ключей, которые повторяются.

Есть ли встроенная функция, которая может это сделать?

Можешь попробовать

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

Вывод

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

Простое предложение:

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

Обновление по комментариям

Вы можете снова запустить их:

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

Эта опция группирует и суммирует значения всех повторных индексов в массиве.

Код здесь:

 $aValues[]=array("nametogroup",10); $aValues[]=array("nametogroup",20); $aValues[]=array("nametogroup2",30); $aValues[]=array("nametogroup2",20); echo var_dump($aValues); // array before grouping foreach ($aValues as $id=>$value) { $a2sum["{$value[0]}"]=$value[1] + $a2sum["{$value[0]}"]; } echo var_dump($a2sum); //array after group and adding values 

Это приведет к:

 array 0 => array 0 => string nametogroup (length=11) 1 => int 10 1 => array 0 => string nametogroup (length=11) 1 => int 20 2 => array 0 => string nametogroup2 (length=12) 1 => int 30 3 => array 0 => string nametogroup2 (length=12) 1 => int 20 array nametogroup => int 30 nametogroup2 => int 50