@TheAlexMir
web developer

PHP как суммировать массив по ключам?

Добрый день! Уже два дня бьюсь над одной задачей, и никак не найду решение.

Собственно, принципе: есть бот в телеграмме, который записывает результаты дистанции участников в км. К примеру - пользователь написал результат "5.5", бот обработал и записал в БД в таблицу results *имя пользователя* - 5.5.

Потом каждое воскресенье cron выполняет такую задачу: берет данные из таблиц results, собирает такую строку: "1-имя пользователя-километраж,2-имя пользователя-километраж" и т.д., а после сохраняет в таблице archive, где есть такие поля: id, week (текущая неделя), year (текущий год), content(сама строка) и из этих данных строит пользователям отчет за каждую неделю.

Вопрос: отчет за каждую неделю я сделал путем получения через номер недели content из таблицы archive и через explode и циклы перевел значения в читаемый вид. Но вот с годовыми отчетами полный ступор. Везде в archive год проставлен как year = 1. Суть в том, что участники могут быть одни и те же за разные недели и мне надо их результат суммировать.

К примеру, есть такие записи в таблице archive:
Неделя 1: 1-Иван-24.5,2-Владимир-30
Неделя 2: 1-Александр-30.2,2-Иван-20
Неделя 3: 1-Владимир-4,2-Иван-10,3-Александр-5.5

Нужно отобразить:
Иван - 54.5
Александр - 35.5
Владимир - 34

Имена участников могут быть разными.
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
о господи.
никакой таблицы archive, никакого ада с explode, никакого крона и никакого колупания с массивами в пхп тут быть не должно.
в таблице results должно быть поле с датой.
вся нужная информация берется из нее одним запросом
SELECT user, sum(km) FROM results WHERE date BETWEEN начало AND конец GROUP BY user

Вместо начало и конец подставить нужные даты - хоть неделя, хоть месяц, хоть год.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 14:44
10000 руб./за проект
25 апр. 2024, в 14:44
250 руб./в час