Объединяйте дни, где часы работы аналогичны
Как я могу закодировать функцию в PHP (с помощью CodeIgniter), чтобы объединить дни с аналогичным временем работы магазина вместе. Например, если мы имеем:
Mon 9am-5pm
Tue 9am-5pm
Wed 9am-5pm
Thu 9am-5pm
Fri 9am-5pm
Sat 9am-7pm
Sun 9am-7pm
Я хочу, чтобы код упрощал его:
Mon-Fri 9am-5pm
Sat-Sun 9am-7pm
Как мне это сделать без длинного списка if/else или case ifs? Я использую CodeIgniter..
Ответы
Ответ 1
<?php
$openHours = array(
'Mon' => '9am-5pm',
'Tue' => '9am-5pm',
'Wed' => '9am-9pm',
'Thu' => '9am-5pm',
'Fri' => '9am-5pm',
'Sat' => '9am-7pm',
'Sun' => '9am-7pm'
);
$summaries = array();
foreach ($openHours as $day => $hours) {
if (count($summaries) === 0) {
$current = false;
} else {
$current = &$summaries[count($summaries) - 1];
}
if ($current === false || $current['hours'] !== $hours) {
$summaries[] = array('hours' => $hours, 'days' => array($day));
} else {
$current['days'][] = $day;
}
}
foreach ($summaries as $summary) {
if (count($summary['days']) === 1) {
echo reset($summary['days']) . ' ' . $summary['hours'] . PHP_EOL;
} else {
echo reset($summary['days']) . '-' . end($summary['days']) . ' ' . $summary['hours'] . PHP_EOL;
}
}
пример кода
Ответ 2
Пожалуйста, помогите мне нужно решение для аналогичного типа:
Пн '10 утра-1 вечера /5 вечера-10 вечера' '
Вт 10:00 - 13:00
Ср. "10:00 - 13:00/17:00 - 22:00"
Чт '' 10 утра-1 вечера /5 вечера-10 вечера ''
Пт '10 утра-1 вечера /5 вечера-10 вечера' '
Сб 10.00 - 13.00
Вс 10:00 - 13:00
want the code to simplify it to:
Mon-Fri 10am-1pm
5pm-10pm
Tue 10am-1pm
Sat-Sun 10am-1pm
Пожалуйста, помогите, спасибо