$array = array(
array(
'id' => 1,
'category_id' => 5,
'score' => 321
),
array(
'id' => 2,
'category_id' => 2,
'score' => 123
),
array(
'id' => 3,
'category_id' => 5,
'score' => 567
),
array(
'id' => 4,
'category_id' => 2,
'score' => 878
),
array(
'id' => 5,
'category_id' => 5,
'score' => 621
)
);
$result = array_reduce($array, function($carry, $item){
if(!isset($carry[$item['category_id']])){
$carry[$item['category_id']] = ['category_id'=>$item['category_id'],'score'=>$item['score']];
} else {
$carry[$item['category_id']]['score'] += $item['score'];
}
return $carry;
});