@assets
Back-end developer

Как группировать массив и подсчитать?

Всем привет.

Есть массив https://gist.github.com/Asetss/2dc996fbdae9a15ef7a...

Мне надо группировать по дате и подсчитать time по этой дате.

Точнее нужно чтобы на выходе получился вот так
https://gist.github.com/Asetss/16f4540cfe4093f66ab...

как сделать так?
  • Вопрос задан
  • 142 просмотра
Решения вопроса 1
@dimoff66
Кратко о себе: Я есть
foreach ($arr as $ind=>$usersBlock) {
	$keys = [];
	foreach ($usersBlock as $user) {
		$key = $user['user_id'] . '#' . $user['date'];
		list($hours, $minutes, $seconds) = explode(':', $user['time']);

		$seconds += $minutes * 60 + $hours * 3600;

		if(!isset($keys[$key]))	{
			$keys[$key] = $user;
			$keys[$key]['seconds'] = $seconds;
		} else {
			$keys[$key]['seconds'] += $seconds;
		}
	}	

	$arr[$ind] = [];
	foreach ($keys as $key => $value) {
		$value['time'] = convertToTime($value['seconds']);
		unset($value['seconds']);
		$arr[$ind][] = $value;
	}
}

function convertToTime($seconds) {
	// Напишите конвертацию секунд в полноценное время сами
	return $seconds;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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