Какой цикл использовать, чтобы последовательно выдавались значения?

Ссылка скопирована
4 февраля 2026 1 ответ

Допустим в 16:30 запускаю функцию в цикле от 0 до 1440 минут с шагом 60 и формирую массив количества сообщений и массив соответствующих временных отчетов, чтобы понять сколько было событий в каждый час за прошедшие сутки.

for (let i = 0; i < 1440; i+=60) {         funcGetMessageToday(-i); // делает запрос на сервер     }

for (let i = 0; i < 1440; i+=60) { funcGetMessageToday(-i); // делает запрос на сервер }

Приходит такой JSON:

['18:30', '19:30', '20:30', '21:30', '22:30', '23:30', '00:30', '01:30', '02:30', '03:30', '06:30', '04:30', '09:30', '07:30', '11:30', '05:30', '12:30', '13:30', '08:30', '10:30', '15:30', '14:30', '16:30']

['18:30', '19:30', '20:30', '21:30', '22:30', '23:30', '00:30', '01:30', '02:30', '03:30', '06:30', '04:30', '09:30', '07:30', '11:30', '05:30', '12:30', '13:30', '08:30', '10:30', '15:30', '14:30', '16:30']

Местам время перепутано. Нужно чтобы возвращался корректный массив.

['18:30', '19:30', '20:30', '21:30', '22:30', '23:30', '00:30', '01:30', '02:30', '03:30', '04:30', '05:30', '06:30', '07:30', '08:30', '09:30', '10:30', '11:30', '12:30', '13:30', '14:30', '15:30', '16:30']

['18:30', '19:30', '20:30', '21:30', '22:30', '23:30', '00:30', '01:30', '02:30', '03:30', '04:30', '05:30', '06:30', '07:30', '08:30', '09:30', '10:30', '11:30', '12:30', '13:30', '14:30', '15:30', '16:30']

Может мне какой-то другой цикл или вообще способ выбрать, чтобы была последовательная работа функции? Вроде сам for последовательный, но приходят значения не всегда корректно.

Дополнительно:

Приходит такой JSON:

Откуда приходит? С бека? Тогда ты ничего не сделаешь.

Покажи весь актуальный код, потому что то, что ты пишешь, почти гарантированно слабо связано с реальностью.

  • for (let i = 0; i < 1440; i+=60) {
    funcGetMessageToday(-i); // делает запрос на сервер
    }

    а в какую переменную результат складывается? что в ней, тот самый json или одно его значение?

  • Вангую - функция у вас асинхронная и порядок занесения данных в массив соответствует не порядку запросов, а порядку прихода ответов.
    Лучший вариант - менять API, чтобы сервер возвращал нужные данные за один запрос, например, с передачей ему начала и конца интервала и шага по времени.
    Ещй вариант - сохранять данные в объект или Map, где ключом является время. При необходимости потом преобразовывать в массив по сортированным ключам.

    • Точно ассинхронная) можно for await
    • Приветствую. Сделал в итоге по второму варианту - сохранял данные в объект и сортировал. Но сам понимаю, что проще API поменять, на этом и буду настаивать. Большое спасибо)

    Ответы:

    Сортировать после получения данных. Либо поочерёдно пробовать доставать данные

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Андрей PHP Ответ

    Для последовательного вывода значений в PHP можно использовать различные циклы, такие как цикл for, цикл while или цикл foreach, в зависимости от конкретной задачи.

    1. Цикл for:
    Цикл for подходит для случаев, когда известно количество итераций. Например, если нужно вывести значения от 1 до 10, можно использовать следующий код:

    for ($i = 1; $i &lt;= 10; $i++) {
        echo $i . &quot;<br>";
    }

    for ($i = 1; $i &lt;= 10; $i++) { echo $i . &quot;<br>"; }

    2. Цикл while:
    Цикл while подходит для случаев, когда количество итераций заранее неизвестно. Например, если нужно вывести значения от 1 до 10, можно использовать следующий код:

    $i = 1;
    while ($i &lt;= 10) {
        echo $i . &quot;<br>";
        $i++;
    }

    $i = 1; while ($i &lt;= 10) { echo $i . &quot;<br>"; $i++; }

    3. Цикл foreach:
    Цикл foreach используется для перебора элементов массива. Если у вас есть массив значений, и вы хотите вывести их последовательно, то можно воспользоваться циклом foreach:

    $values = [1, 2, 3, 4, 5];
    foreach ($values as $value) {
        echo $value . "<br>";
    }

    $values = [1, 2, 3, 4, 5]; foreach ($values as $value) { echo $value . "<br>"; }

    Выбор конкретного цикла зависит от конкретной задачи и структуры данных. Надеюсь, это поможет вам выбрать подходящий цикл для вашей задачи.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно