7 возможных комбинаций (от наиболее специфичный по крайней мере):
Morning, Afternoon, Night
Morning, Afternoon
Morning, Night
Afternoon, Night
Morning
Afternoon
Night
Вы можете определить комбинации аналогично тому, как будут определены разрешения UNIX:
$111 = "Morning - Night";
$110 = "Morning - Afternoon";
$101 = "Morning - Night";
$011 = "Afternoon - Night";
$100 = "Morning";
$010 = "Afternoon";
$001 = "Night";
Ваш следующий шаг для сопоставления дней с их соответствующими значениями в массиве, считают дни недели целыми числами от 0 до 6 (sun-mon). Возможность воскресенья для бывшего. должен быть помехой в индексе 0, в понедельник по 1 и т. д.
Настройте цикл, который выполняет следующие действия. Для каждого дня начинайте с пустой строки. Если доступно определенное время, добавьте «1» к строке. Если нет, добавьте «0».
Это как ваш массив должен выглядеть после цикла
$day[0] = "110";
$day[1] = "110";
$day[2] = "110";
$day[3] = "011";
$day[4] = "011";
$day[5] = "100";
$day[6] = "110";
Теперь его просто вопрос организации элементов $day
с одинаковыми значениями в группах. Сначала отобразите самые большие группы. Один из способов, вы можете сделать это с массивом, как это:
$array = []
$array["110"] = "012", "6"
$array["011"] = "34"
$array["100"] = "5"
Обратите внимание, что 6 не приходит после того, как 2, так что она вставляется в массив [ «110»] в качестве другого элемента вместо того, чтобы быть добавлены к " 012" .
Далее, порядок группы по длине:
012 => 110
34 => 011
5 => 100
6 => 110
Теперь преобразовывают на английском:
Su - Tu: Morning - Night
W - Th: Morning - Night
F: Morning - Night
Sa: Morning - Night
Прежде всего, необходимо установить некоторые правила, как то, что вы предпочитаете группе. Если это будни, я бы создал структуру данных (в простейшем случае многомерный массив), которая группируется таким образом. – ChristianM
У меня кошмары, думающие, что база данных хранится как: time -> Night Night. наличие -> да. Если это так, первое, что вам нужно сделать, это разбить будний день и часть дня ... – barbarity