2016-01-18 6 views
-1

Я хочу группы дней и часов от этого:Matching дни и часы

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 
 
Below is the code which I'm trying to work out. 

    $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:00AM','1:00pm-6pm') 
     ); 

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

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

      echo implode(",", $days) . " " . $time . PHP_EOL; 

    } 

+1

Как вы получаете над массивом? – AnkiiG

+0

Код не работает. Любой ваш начальный код и оставленные вещи не соответствуют. В кодексе вы не указали вечернее время для Mon и других дней, как оно существует выше. Пожалуйста, проверьте обе вещи. Затем вы можете сравнить значение массива. Хотя совпадение между собой может быть забито. Я готов помочь вам в написании кода, если вы мне понадобятся. –

+0

** я хочу выход: пн, пн, чт - 9:00 AM - 11: 00aM 13:00 - 18:00 tue: 8:00 AM - 11:00 am 12:00 pm-6pm ** fri, sun - 9 : 00:00 - 12:00 PM 13:00 - 18:00 sat: 9:00 AM -7: 00pm –

ответ

2

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

<?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 

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

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

+0

его рабочий ... хороший –