@Serkap
Универсал

Как определить интервал в расписание на php?

Привет друзья. Сломал "голову".

Имеется расписание общественного транспорта.
Хранится в минутах от 00:00 часов. Расписание вывожу в таблицу, час и минуты, но вот не могу ни как сообразить как вычислить интервал рейсов.
Как делаю вывод в таблицу, пример:
12345.jpg
06 03 08 13 18 23 28
06 - это час
03 08 13 18 23 28 - это минуты

Нужно получить интервал, если в часе больше 4 рейсов.

Вот так нужно, чтоб выводилось:
06 11-12 минут
67890.jpg
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
Lastor
@Lastor
В чем сила, брат? В ньютонах.
$minutes = ['03', '09', '13', '18', '23', '28'];
var_dump(getRange($minutes));

function getRange($minutes): array
{
    if(count($minutes) < 5) return $minutes;

    $minutes = array_map(fn($m) => intval($m), $minutes);
    rsort($minutes);
    $ranges = [];
    foreach ($minutes as $k => $minute){
        if($k){
            $ranges[] = $prev - $minute;
        }
        $prev = $minute;
    }
    $min = min($ranges);
    $max = max($ranges);
    return $min === $max
        ? [$max]
        : [$min, $max];
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Вычисляйте минимум и максимум разницы минут между рейсами.
18 - 3 = 15
28 - 18 = 10
38 - 28 = 10
48 - 38 = 10
58 - 48 = 10
min = 10, max = 15
Ответ написан
Комментировать
@psiklop
Simple способ)
if(count($minutes) >= 5) {
	$interval = ceil(60/(count($minutes)-1))-1;
	$interval .= "-".$interval+1;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы