Я хочу группировать дни и часы из этого:
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; }
Вот что я придумал.
<?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 () в качестве индекса массива, так что вы можете правильно сгруппировать по нескольким наборам часов.
Дайте мне знать, если вам нужна дополнительная помощь или объяснение.
Других решений пока нет …