Объединить массивы и сгруппировать
Прошу помощи с объединением двух массивов:
Array(
[1] => Array(
[id] => 1
[name] => name1
[surname] => surname1
)
[2] => Array(
[id] => 2
[name] => name2
[surname] => surname2
)
[4] => Array(
[id] => 3
[name] => name3
[surname] => surname3
)
)
Array(
[0] => Array(
[id] => 1
[result] => 5
)
[1] => Array(
[id] => 2
[result] => 12
)
[2] => Array(
[id] => 3
[result] => 19
)
[3] => Array(
[id] => 1
[result] => 0
)
[4] => Array(
[id] => 3
[result] => 0
)
[5] => Array(
[id] => 2
[result] => 6
)
)
Я хочу получить новый массив, где будут группы равные самому большому (в данном случае 2 группы) количеству повторений id во втором массиве и одна группа с общим значением. Пример результата:
Array(
[Total] => Array(
[0] => Array(
[id] => 1
[name] => name1
[surname] => surname1
[result] => 5
)
[1] => Array(
[id] => 2
[name] => name2
[surname] => surname2
[result] => 18
)
[2] => Array(
[id] => 3
[name] => name3
[surname] => surname3
[result] => 19
)
)
[group 1] => Array(
[0] => Array(
[id] => 1
[name] => name1
[surname] => surname1
[result] => 5
)
[1] => Array(
[id] => 2
[name] => name2
[surname] => surname2
[result] => 12
)
[2] => Array(
[id] => 3
[name] => name3
[surname] => surname3
[result] => 19
)
)
[group 2] => Array(
[0] => Array(
[id] => 1
[name] => name1
[surname] => surname1
[result] => 5
)
[1] => Array(
[id] => 2
[name] => name2
[surname] => surname2
[result] => 6
)
[2] => Array(
[id] => 3
[name] => name3
[surname] => surname3
[result] => 0
)
)
)
Вот моя функция, которая их объединяет:
public function grouping() {
$arr1 = [...];
$arr2 = [...];
$groupNumber = 0;
$finalArr[Total] = [];
foreach ($arr1 as $player) {
$groupNumber = 0;
$allResult = 0;
foreach ($arr2 as $result) {
if ($result['id'] === $player['id']) {
$raceNumber++;
$allResult += $result['result'];
$finalArr["group $groupNumber"][] = $player + ['result' => $result['result']];
}
}
$finalArr[ALL_RACES][] = $player + ['result' => $allResult];
}
return $finalArr;
}
Проблема тут как минимум во вложенном цикле, который я не знаю как убрать. Я пытался использовать array_column на первый массив, чтобы ключ был равным id и я мог вызывать элемент по нему, но тогда у меня появляется проблема с тем, что я не знаю как вычислить количество повторений id во втором массиве и не могу воссоздать нужный мне результат.