Как округлить целое число до ближайших 15 в PHP

У меня есть переменная INTEGER(255) $duration, сохраненная со значением, взятым у пользователя. Мне нужно округлить это UP до ближайших 15. Я искал все, но не смог найти решение.

Как я могу это сделать?

Например:

  • 10 становится 15
  • 16 становится 30
  • 130 становится 135

Кроме того, как я могу добавить $duration к переменной TIME $time, чтобы вывести время после этой продолжительности?

Например, из 080000:

  • Если $duration равно 15, $time становится 081500.
  • Если $duration равно 30, $time становится 083000
  • Если $duration равно 135, $time становится 101500.

Спасибо!

Вы можете попробовать эту логику для длительности ((round($duration/15)*15) + 15).

Rudra 13.12.2020 15:28

Вы также можете использовать потолок или пол вместо круглой функции. Вам нужно будет сделать немного проб и ошибок.

Rudra 13.12.2020 15:29
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
123
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать простое деление и сложение с оператором приведения (вернет целое значение без дроби) следующим образом:

$val = 130;//or any value
$roundedVal = ((int)($val/15) + 1) * 15;

по второму вопросу:

$time='080000';
$valHours = (int)($val/60);
$valMin = (int)($val % 60);
$time = $time + ($valHours * 10000) + ($valMin * 100);
$time = strlen($time) == 8? $time : '0' . $time;

последняя строка предназначена для фиксации начального нуля, поскольку это не обычный формат времени. Я не учитывал секунды.

Другие вопросы по теме