将MySQL表的元素与PHP组合

将MySQL表的元素与PHP组合,php,mysql,arrays,Php,Mysql,Arrays,我有一项艰巨的任务,就是在不同的地方显示时间。我想结合几个例子,从一个晚上开始到第二天早上结束。有人知道我如何修改下面的脚本以使其正常工作吗 在可能的情况下,应合并具有相同地点\u id的所有结果,时间\u组\u id对此没有任何意义。如果时间在11:59结束,那么我想假设它一直持续到第二天早上 我的当前表输出如下: <?php //connect $day_times = array(); $days_map = array( 'monday' => 'Mon',

我有一项艰巨的任务,就是在不同的地方显示时间。我想结合几个例子,从一个晚上开始到第二天早上结束。有人知道我如何修改下面的脚本以使其正常工作吗

在可能的情况下,应合并具有相同地点\u id的所有结果,时间\u组\u id对此没有任何意义。如果时间在11:59结束,那么我想假设它一直持续到第二天早上

我的当前表输出如下:

<?php

//connect

$day_times = array();
$days_map = array(
  'monday'     => 'Mon',
  'tuesday'    => 'Tue',
  'wednesday'  => 'Wed',
  'thursday'   => 'Thu',
  'friday'     => 'Fri',
  'saturday'   => 'Sat',
  'sunday'     => 'Sun'
);

$query = mysql_query("SELECT distinct day, time_group_id, start_time, end_time FROM times 
WHERE place_id = '80' ORDER BY id ASC");

while ($row=mysql_fetch_assoc($query)) {
    $start_time = stripslashes($row['start_time']);
    $end_time = stripslashes($row['end_time']);

    $start_time = strtotime("$start_time");
    $end_time = strtotime("$end_time");

    $day = strtolower($row['day']);

    $day_times[$row['time_group_id']]['times'][] = $start_time;
    $day_times[$row['time_group_id']]['times'][] = $end_time;
    $day_times[$row['time_group_id']]['days'][]  = $day;
}

foreach ($day_times as $timegroup) {
    $first_day = array_shift($timegroup['days']);
    $last_day = array_pop($timegroup['days']);
    $times = $timegroup['times'];

    echo $days_map[$first_day] . ' - ' . $days_map[$last_day] . ': ';
    echo date('g:ia', min($times));
    echo ' to ';
    echo date('g:ia', max($times));     
    echo '<br />';
}  

?>
星期一至四:晚上11:00至11:59

星期二至五:上午12:00至凌晨2:00

我希望它看起来像这样:

<?php

//connect

$day_times = array();
$days_map = array(
  'monday'     => 'Mon',
  'tuesday'    => 'Tue',
  'wednesday'  => 'Wed',
  'thursday'   => 'Thu',
  'friday'     => 'Fri',
  'saturday'   => 'Sat',
  'sunday'     => 'Sun'
);

$query = mysql_query("SELECT distinct day, time_group_id, start_time, end_time FROM times 
WHERE place_id = '80' ORDER BY id ASC");

while ($row=mysql_fetch_assoc($query)) {
    $start_time = stripslashes($row['start_time']);
    $end_time = stripslashes($row['end_time']);

    $start_time = strtotime("$start_time");
    $end_time = strtotime("$end_time");

    $day = strtolower($row['day']);

    $day_times[$row['time_group_id']]['times'][] = $start_time;
    $day_times[$row['time_group_id']]['times'][] = $end_time;
    $day_times[$row['time_group_id']]['days'][]  = $day;
}

foreach ($day_times as $timegroup) {
    $first_day = array_shift($timegroup['days']);
    $last_day = array_pop($timegroup['days']);
    $times = $timegroup['times'];

    echo $days_map[$first_day] . ' - ' . $days_map[$last_day] . ': ';
    echo date('g:ia', min($times));
    echo ' to ';
    echo date('g:ia', max($times));     
    echo '<br />';
}  

?>
星期一至四:晚上11时至凌晨2时

我有一个类似以下内容的MySQL表:

<?php

//connect

$day_times = array();
$days_map = array(
  'monday'     => 'Mon',
  'tuesday'    => 'Tue',
  'wednesday'  => 'Wed',
  'thursday'   => 'Thu',
  'friday'     => 'Fri',
  'saturday'   => 'Sat',
  'sunday'     => 'Sun'
);

$query = mysql_query("SELECT distinct day, time_group_id, start_time, end_time FROM times 
WHERE place_id = '80' ORDER BY id ASC");

while ($row=mysql_fetch_assoc($query)) {
    $start_time = stripslashes($row['start_time']);
    $end_time = stripslashes($row['end_time']);

    $start_time = strtotime("$start_time");
    $end_time = strtotime("$end_time");

    $day = strtolower($row['day']);

    $day_times[$row['time_group_id']]['times'][] = $start_time;
    $day_times[$row['time_group_id']]['times'][] = $end_time;
    $day_times[$row['time_group_id']]['days'][]  = $day;
}

foreach ($day_times as $timegroup) {
    $first_day = array_shift($timegroup['days']);
    $last_day = array_pop($timegroup['days']);
    $times = $timegroup['times'];

    echo $days_map[$first_day] . ' - ' . $days_map[$last_day] . ': ';
    echo date('g:ia', min($times));
    echo ' to ';
    echo date('g:ia', max($times));     
    echo '<br />';
}  

?>

我的PHP脚本:

<?php

//connect

$day_times = array();
$days_map = array(
  'monday'     => 'Mon',
  'tuesday'    => 'Tue',
  'wednesday'  => 'Wed',
  'thursday'   => 'Thu',
  'friday'     => 'Fri',
  'saturday'   => 'Sat',
  'sunday'     => 'Sun'
);

$query = mysql_query("SELECT distinct day, time_group_id, start_time, end_time FROM times 
WHERE place_id = '80' ORDER BY id ASC");

while ($row=mysql_fetch_assoc($query)) {
    $start_time = stripslashes($row['start_time']);
    $end_time = stripslashes($row['end_time']);

    $start_time = strtotime("$start_time");
    $end_time = strtotime("$end_time");

    $day = strtolower($row['day']);

    $day_times[$row['time_group_id']]['times'][] = $start_time;
    $day_times[$row['time_group_id']]['times'][] = $end_time;
    $day_times[$row['time_group_id']]['days'][]  = $day;
}

foreach ($day_times as $timegroup) {
    $first_day = array_shift($timegroup['days']);
    $last_day = array_pop($timegroup['days']);
    $times = $timegroup['times'];

    echo $days_map[$first_day] . ' - ' . $days_map[$last_day] . ': ';
    echo date('g:ia', min($times));
    echo ' to ';
    echo date('g:ia', max($times));     
    echo '<br />';
}  

?>

你可能想简单地考虑在“结束日”增加另一个专栏,以缓解你的生活。这甚至可以在一个数据集中从mo 01:00到mo 00:55


(mysql_*已被弃用。请使用pdo)

或将结束时间转换为“自开始时间起的时间”作为间隔。由此你可以很容易地计算出结束时间