Соответствующие дни и часы

Я хочу группировать дни и часы из этого:

Mon  : array(9:00AM - 11:00AM, 1:00pm-6pm)
Tue  : array(8:00AM - 11:00AM,12:00pm-6pm)
Wed  : array(9:00AM - 11:00AM, 1:00pm-6pm)
Thu  : array(9:00AM - 11:00AM,1:00pm-6pm)
Fri  : array(9:00AM - 12:00PM,1:00pm-6pm)
Sat  : array(9:00AM - 7:00PM)
Sun  : array(9:00AM - 12:00AM,1:00pm-6pm)

ожидаемый результат:

Mon,wed,thu - 9:00AM - 11:00aM
1:00pm-6pm
tue :         8:00AM - 11:00am
12:00pm-6pm
fri,sun -     9:00AM - 12:00PM
1:00pm-6pm
sat:          9:00AM -7:00pm
Ниже приведен код, который я пытаюсь разработать.

$ open_Hours = array (
'Mon' => array ('9:00 - 11:00 AM', '13:00 - 18:00'),
'Tue' => array ('8:00 AM - 11:00 AM', '12:00 00:00 - 18:00'),
«Wed» => массив («9:00 - 11:00», «13:00 - 18:00»),
«Чт» => массив («9:00 - 11:00», «13:00 - 18:00»),
«Пт» => массив («9:00 - 12:00», «13:00 - 18:00»),
'Sat' => array ('9:00 AM - 7:00 PM'),
'Sun' => array ('9:00 - 12:00 AM', '13:00 - 18:00')
);

foreach ($ open_Hours as $ k => $ v) {

$ open_array [$ v] [] = $ k;
}
foreach ($ open_array как $ time => $ days) {

echo implode (",", $ days). "" время PHP_EOL;

}

-1

Решение

Вот что я придумал.

<?php
$open_Hours = array(
'Mon' => array('9:00AM - 11:00AM', '1:00pm - 6pm'),
'Tue' => array('8:00AM - 11:00AM', '12:00pm - 6pm'),
'Wed' => array('9:00AM - 11:00AM', '1:00pm - 6pm'),
'Thu' => array('9:00AM - 11:00AM','1:00pm - 6pm'),
'Fri' => array('9:00AM - 12:00PM','1:00pm - 6pm'),
'Sat' => array('9:00AM - 7:00PM'),
'Sun' => array('9:00AM - 12:00PM','1:00pm - 6pm')
);

$open_array = array();
foreach($open_Hours as $day => $periods) {
if(!isset($open_array[serialize($periods)]))
$open_array[serialize($periods)] = array();
$open_array[serialize($periods)][] = $day;
}

foreach($open_array as $times => $days) {
$times = unserialize($times);
$days = implode(",", $days);
for($i=0;$i<count($times); $i++) {
if($i == 0) {
echo $days;
echo str_repeat(' ', ((strlen($days)>12)?0:(12-strlen($days)));
} else {
echo str_repeat(' ', 12);
}
echo '- ' . $times[$i] . PHP_EOL;
}
}

Выход:

Mon,Wed,Thu - 9:00AM - 11:00AM
- 1:00pm - 6pm
Tue         - 8:00AM - 11:00AM
- 12:00pm - 6pm
Fri,Sun     - 9:00AM - 12:00PM
- 1:00pm - 6pm
Sat         - 9:00AM - 7:00PM

Он использует serialize () в качестве индекса массива, так что вы можете правильно сгруппировать по нескольким наборам часов.

Дайте мне знать, если вам нужна дополнительная помощь или объяснение.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector