合并数组并在php

时间:2015-12-19 02:33:27

标签: php mysql arrays database merge

我正在尝试重新使用PHP,但我真的在努力解决这个问题。 我正在建立一个预订网球场的预订系统。用户可以在特定时间查看时间以及法院是否被预订。 预订存储在MySQL表中,只有两列:datetime和预订它的用户的id。 我可以检索这样的数据:

    $sth = $this->dbh->prepare('SELECT bookingDate, booked_by FROM Court1 WHERE bookingDate LIKE ?');

    $sth->execute(array("%$time%"));

    // Array to hold the bookings
    $getCourt1 = array();

    //Getting the data from db
    while($r=$sth->fetch()){

            $courtData[0]   = substr($r['bookingDate'], 10, 12);
            $courtData[1]   = $r['booked_by'];

            array_push($getCourt1, $courtData);
    }

我的想法是将检索到的数据与预定义的数组“合并”,保留可能的时间来预订法庭。

    $base = array(array('08:00:00',''), array('09:00:00', ''), array('10:00:00', ''), array('11:00:00', ''), array('12:00:00', ''), array('13:00:00', ''), array('14:00:00', ''), array('15:00:00', ''), array('16:00:00', ''), array('17:00:00', ''), array('18:00:00', ''), array('19:00:00', ''), array('20:00:00', ''));

原因是我需要显示预订时间,即使他们没有被预订。 我尝试了几种方法,但这是我最接近的方法:

    $aCourt1 = array_replace($base, $getCourt1);

将合并后的数组返回给控制器,控制器构建html,然后将其作为变量传递给视图,如下所示:

    $aCourt1 = $booking->showBookings($time);
    $court1 = '
            <tr>
                <td class="courtTime">'.$aCourt1[0][0].'</td>
                <td class="courtBook '.$aCourt1[0][1].'" data-target="#confirmBooking">'.$aCourt1[0][1].'</td>
            </tr>
            <tr>
                <td class="courtTime">'.$aCourt1[1][0].'</td>
                <td class="courtBook '.$aCourt1[1][1].'" data-target="#confirmBooking">'.$aCourt1[1][1].'</td>
            </tr>
            <tr>
                <td class="courtTime">'.$aCourt1[2][0].'</td>
                <td class="courtBook '.$aCourt1[2][1].'" data-target="#confirmBooking">'.$aCourt1[2][1].'</td>
            </tr>
            <tr>
                <td class="courtTime">'.$aCourt1[3][0].'</td>
                <td class="courtBook '.$aCourt1[3][1].'" data-target="#confirmBooking">'.$aCourt1[3][1].'</td>
            </tr><tr>
                <td class="courtTime">'.$aCourt1[4][0].'</td>
                <td class="courtBook '.$aCourt1[4][1].'" data-target="#confirmBooking">'.$aCourt1[4][1].'</td>
            </tr>
            <tr>
                <td class="courtTime">'.$aCourt1[5][0].'</td>
                <td class="courtBook '.$aCourt1[5][1].'" data-target="#confirmBooking">'.$aCourt1[5][1].'</td>
            </tr>';

该表显示正常,但是首先显示特定日期的条目,然后其余时间按时间顺序显示。 我已经尝试了大多数数组函数并使它通过循环工作,但到目前为止我一直没有成功。我必须离开某个地方,但不确定在哪里,所以希望有人可以给我建议。提前致谢。 PS:我计划使用布尔值来检查时间段是否已被预订,但问题是我试图避免为每天创建一个完整时间表,并且只使用每个法庭按日期时间索引的一个表。也许有更好的方法来建立默认表而不是合并数组?

0 个答案:

没有答案