2013-03-06 3 views
-1

У меня есть код, где я могу экономить рабочее время и будний день для конкретной работы в MySQL. Когда данные извлекаются из MySQL вывод будет следующим:PHP, получающий будний час

Array ([open_hours] => 0 10 0,1 10 0,2 10 0,3 10 0,4 10 0,5 10 0,6 10 0) 

0 10 0 просто означает Mon 10am 12am и если бы это было так 0 15 18 означает Mon 3pm 6pm. Это не проблема, как я уже решил эту проблему следующим кодом:

$openHrs = explode(",", $openHrs['open_hours']); 

     $weekdays = array('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); 
     $res  = array(); 
     foreach($openHrs as &$temp) { 

      $temp = explode(" ", $temp); 

      $temp[1] = $temp[1] > 12 ? $temp[1] - 12 . 'pm' : $temp[1] . 'am'; 
      $temp[2] = $temp[2] > 12 ? $temp[2] - 12 . 'pm' : $temp[2] . 'am'; 
      $res[] = $weekdays[$temp[0]] . ' ' . $temp[1] . ' - ' . $temp[2]; 
     } 

Теперь, как я могу закодировать более продвинутым, так что если сегодня был понедельник мне нужно только для отображения выходной результат понедельник? Который 0 10 0 или Mon 10am 12am? Спасибо за помощь

+0

где хранятся цифровые значения дня в приведенном выше коде ???? – Sriniwas

+0

@Sriniwas, что вы имеете в виду? – d3bug3r

+0

nothin .. было просто недоразумением .. :) – Sriniwas

ответ

1

Если вы хотите отфильтровать open_hours с будним днем ​​на сегодня, сделайте нижеследующий код.

$openHrs = explode(",", $openHrs['open_hours']); 

    $weekdays = array('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); 
    $res  = array(); 

    $todayWeekDay = date('D'); // get today's weekday 
    $todayWeekNum = array_search($todayWeekDay, $weekdays); // get number for today's weekday 

    foreach($openHrs as &$temp) { 

     $temp = explode(" ", $temp); 

     $temp[1] = $temp[1] > 12 ? $temp[1] - 12 . 'pm' : $temp[1] . 'am'; 
     $temp[2] = $temp[2] > 12 ? $temp[2] - 12 . 'pm' : $temp[2] . 'am'; 
     // only add the item where the weekday is equal to today's 
     if ($temp[0] == $todayWeekNum) { 
      $res[] = $weekdays[$temp[0]] . ' ' . $temp[1] . ' - ' . $temp[2]; 
     } 
    } 
2

U может решить эту проблему с помощью этого кода

 for($i=0;$i<=6;$i++) 
    { 
    if($res[$i]==date('w')) //get today's week number 
      { 
       echo $res[$i]." ".$temp[1]." ".$temp[2];    
      } 
    } 

ИЛИ

 for($i=0;$i<=6;$i++) 
    { 
    if($res[$i]==date('D')) // get today's weekday 
      { 
       echo $res[$i]." ".$temp[1]." ".$temp[2];    
      } 
    } 
0
$i; // the weekday; comes as input 

    $openHrs = explode(",", $openHrs['open_hours']); 

    $weekdays = array('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); 
    $res  = array(); 
    $temp = explode(" ", $openHrs[$i]); 

    $temp[1] = $temp[1] > 12 ? $temp[1] - 12 . 'pm' : $temp[1] . 'am'; 
    $temp[2] = $temp[2] > 12 ? $temp[2] - 12 . 'pm' : $temp[2] . 'am'; 
    $res = $weekdays[$temp[0]] . ' ' . $temp[1] . ' - ' . $temp[2]; 
0

Ну это звучит как сложный вопрос, но увидеть, если она стоит попробовать это:

$open_hours = array(Mon 10 0,Tue 10 0,Wed 10 0,Thu 10 0,Fri 10 0,Sat 10 0,Sun 10 0); 
$today = date('D'); 
$associate_array_key = array_keys($open_hours, $today); 
$openHrs = explode(" ", $open_hours[$associate_array_key]); 
foreach($openHrs as &$temp) { 
    $temp[0]; 
    $temp[1] = $temp[1] > 12 ? $temp[1] - 12 . 'pm' : $temp[1] . 'am'; 
    $temp[2] = $temp[2] > 12 ? $temp[2] - 12 . 'pm' : $temp[2] . 'am'; 
} 

Это только концепция, о которой я мог думать, конечно, могут быть некоторые манипуляции, необходимые для кода!

Смежные вопросы