1. Создаете выходной массив.
2. Определяетесь с тем, что будет ключом в нем. Это может быть, например, особым образом сформированная строка из элементов очередного элемента входного массива (например, «9:00 — 19:00») или сериализованный очередной элемент.
3. Пробегаете в цикле по входному. Каждый очередной элемент входного состоит из ключа (день недели) и значения (массив с двумя значениями времени). Так вот, из значения элемента входного массива формируйте ключ выходного (как описано в п.2).
4. В элемент выходного массива по сформированному ключу добавляете ключ элемента входного.
То есть выходной массив будет примерно такой:
Array (
[9:00 — 19:00] => Array ( [0] => Понедельник [1] => Вторник … )
[10:00 — 16:00] => Array ( [0] => Воскресенье ) )
А дальше уже, исходя из требований, формировать выходные строки с перечислениями дней или с формированием диапазонов.