希望日期开始结束于while循环中的一个房间id的一个数组

want date start to end in while loop in one array for one room id

本文关键字:一个 日期 房间 id 数组 开始 结束 希望 while 循环      更新时间:2023-09-26

我想在日历上显示已预订的酒店房间的不可用日期,但我只能显示一个日期,但希望显示当月预订的所有日期,一个是20-25,第二个是29-31…

echo $query = "SELECT * FROM booking_request where room_id = 1' '<br>' ";
$result = $db->query($query);
        if( $result -> num_rows > 0 ) {
            while( $row = $result-> fetch_assoc() )
            {
            echo $name = $row['getaway_name']." <br>";
            echo $start = $row['check_in_date']." <br>";
            echo $end = $row['check_out_date']." <br>";
            $cp = array();
            $arr1 = range(strtotime($row['check_in_date']),strtotime($row['check_out_date']), "86400");
            array_walk_recursive($arr1, function(&$element) { $element = date("d-n-Y", $element); });
           print_r ($arr1); 
            } 

我正在获取中的所有日期

Array ( 
[0] => 15-5-2016 
[1] => 16-5-2016 
[2] => 17-5-2016 
[3] => 18-5-2016 
[4] => 19-5-2016 
[5] => 20-5-2016 
) 
Array ( 
[0] => 29-5-2016 
[1] => 30-5-2016 
[2] => 31-5-2016 
) 

就像while循环中的这个,我希望这个在单个数组中。。

无论您是否需要,数组总是有键的。即使是简单的array('15-5-2016', '16-5-2016');也将是array([0] => '15-5-2016', [1] => '16-5-2016');。也就是说,您的数组确实以0开头,而不是以1开头。

如果您只想要值,那么您必须在想要使用此数组的地方使用循环(我建议使用foreach)。所以您将从数组中获取值。

第一个merage数组都像这个

 $arr1[] = range(strtotime($row['check_in_date']),strtotime($row['check_out_date']), "86400");

在数组的foreach循环之后。

我已经编辑了以前的答案,并使用了数组中的信息。

这是您的数组的示例:新示例!

<?php
$date = date("Y-m-d");
$time=strtotime($date);
$month=date("m",$time);
$year=date("Y",$time);
$end = $year. "-" . $month . "-" . date('t', strtotime($date));
$datebooked=array ('2016-05-15', '2016-05-16', '2016-05-17', '2016-05-18', '2016-05-19', '2016-05-20');
$datebooked1=array('2016-05-29', '2016-05-30', '2016-05-31');
$datesbooked=array_merge($datebooked, $datebooked1);
?>
<table>
<tr>
<?php while(strtotime($date) <= strtotime($end)) {
    $day_num = date('d', strtotime($date));
    $day_name = date('l', strtotime($date));
    $date = date("Y-m-d", strtotime("+1 day", strtotime($date)));
    if(in_array("".$year."-".$month."-".$day_num, $datesbooked)){
        echo "<td style='color:red;'>$day_num <br/> $day_name</td>";
    }else{
        echo "<td style='color:blue;'>$day_num <br/> $day_name</td>";
    }
}
?>
</tr>
</table>

您必须更改范围数组的变量。使用类似的东西:

$count=0;
while($count!==$result->num_rows()){
$count++;
${arr.$count}=range(strtotime($row['check_in_date']),strtotime($row['check_out_date']), "86400");;
}

然后,您可以将每个数组读取为:$arr1、$arr2、$arr3

然后作为我代码中的第9行:

$datesbooked=array_merge($arr1, $arr2, $arr3);