nikaose
@nikaose

Как суммировать ключи многомерного массива по условию?

Здравствуйте,
Не могу решить задачу с многомерным массивом:
Вот массив

Array
(
[0] => Array
(
[Name] => Group1
[UserID] => 178808601
[Stars] => 43
[Date] => 2020-05-11 10:17:50
)
[1] => Array
(
[Name] => Group2
[UserID] => 175654534
[Stars] => 32
[Date] => 2020-04-24 13:26:42
)
[2] => Array
(
[Name] => Group1
[UserID] => 145654534
[Stars] => 10
[Date] => 2020-02-15 19:26:42
)
[3] => Array
(
[Name] => Group6
[UserID] => 165708607
[Stars] => 5
[Date] => 2020-01-24 15:00:42
)
);


Name - это имя группы. У каждого пользователя(UserID) есть свои очки Stars.
Здесь нужен какой-то цикл с проверкой или как пройтись по этому массиву и суммировать очки по группе?
Чтобы в итоге вышло что-то такое
Такое

Array
(
[0] => Array
(
[Name] => Group1
[Stars] => 53
)
[1] => Array
(
[Name] => Group2
[Stars] => 32
)
[2] => Array
(
[Name] => Group6
[Stars] => 5
)
);
  • Вопрос задан
  • 43 просмотра
Решения вопроса 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
Если циклом в лоб
<?php
$sum = [];
foreach($arr as $row)
{
    if(!isset($sum[$row['Name']]))
    {
        $sum[$row['Name']] = [
             'Name' => $row['Name'],
             'Stars' => 0,
        ];
    }

    $sum[$row['Name']]['Stars'] += $row['Stars'];
}
$sum = array_values($sum);

print_r($sum);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы