alexyarik
@alexyarik
Битрикс разработчик

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

Прошу подсказать способ как в таком массиве сделать группировку времени по датам. Я пока что не смог придумать. Мне нужно получить на выходе массив с датами и списком времени каждого дня.
Array
(
    [2] => Array
        (
            [PRODUCTS] => Array
                (
                    [25] => 16.12.2019 11:00:00
                    [26] => 16.12.2019 11:00:00
                    [27] => 30.12.2019 11:00:00
                    [28] => 16.12.2019 12:00:00
                    [29] => 16.12.2019 13:00:00
                    [30] => 16.12.2019 14:00:00
                    [31] => 16.12.2019 15:00:00
                    [32] => 30.12.2019 12:00:00
                    [33] => 30.12.2019 13:00:00
                )

            [INFO_SECTION_ID] => Array
                (
                    [ID] => 2
                    [~ID] => 2
                    [IBLOCK_ID] => 5
                    [~IBLOCK_ID] => 5
                    [NAME] => Новый раздел
                    [~NAME] => Новый раздел
                )

        )

)
  • Вопрос задан
  • 42 просмотра
Решения вопроса 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
<?php
$dates = [
    '16.12.2019 11:00:00',
    '16.12.2019 11:00:00',
    '30.12.2019 11:00:00',
    '16.12.2019 12:00:00',
    '16.12.2019 13:00:00',
    '16.12.2019 14:00:00',
    '16.12.2019 15:00:00',
    '30.12.2019 12:00:00',
    '30.12.2019 13:00:00',
];

$result = [];
foreach($dates as $dt)
{
    //разбиваем входную дату по пробелу на 2 части
    $ex = explode(" ", $dt, 2);

    //$ex[0] - дата
    //$ex[1] - время
    $result[$ex[0]][] = $ex[1];
}

print_r($result);

/*
Array
(
    [16.12.2019] => Array
        (
            [0] => 11:00:00
            [1] => 11:00:00
            [2] => 12:00:00
            [3] => 13:00:00
            [4] => 14:00:00
            [5] => 15:00:00
        )

    [30.12.2019] => Array
        (
            [0] => 11:00:00
            [1] => 12:00:00
            [2] => 13:00:00
        )
)
*/
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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