在PHP中制作动态数组

时间:2019-01-15 05:49:39

标签: php arrays

我有一个静态数组

$times = array("09:00","09:30","10:00","10:30","11:00","11:30","12:00","12:30");

现在我想变得充满活力(根据开始时间和close_time),这意味着我有start_time =“ 09:00”并且 close_time =“ 21:00”,则数组应类似于以下结果。

$times = array("09:00","09:30","10:00","10:30".......,"20:30","21:00");

2 个答案:

答案 0 :(得分:3)

您可以按照以下示例操作:-

$startTime  = new DateTime('2019-01-15 09:00');  //or you can pass time only. example - new DateTime('09:00');
$endTime    = new DateTime('2019-01-15 21:00'); //or you can pass time only. example - new DateTime('21:00');
$timeStep   = 30;
$timeArray  = array();

while($startTime <= $endTime)
{
    $timeArray[] = $startTime->format('H:i');
    $startTime->add(new DateInterval('PT'.$timeStep.'M'));
}

echo json_encode($timeArray);

输出

["09:00","09:30","10:00","10:30","11:00","11:30","12:00","12:30","13:00","13:30","14:00","14:30","15:00","15:30","16:00","16:30","17:00","17:30","18:00","18:30","19:00","19:30","20:00","20:30","21:00"] 

答案 1 :(得分:0)

您还可以使用DatePeriod将时间遍历到数组中:

$start_time = new DateTime('09:00');
$close_time = new DateTime('21:00');
$periods = new DatePeriod($start_time, new DateInterval('PT30M'), $close_time);
foreach ($periods as $period) {
    $times[] = $period->format('H:i');
}
// DatePeriod excludes the end time
$times[] = $close_time->format('H:i');
print_r($times);

输出:

Array ( [0] => 09:00 [1] => 09:30 [2] => 10:00 [3] => 10:30
        [4] => 11:00 [5] => 11:30 [6] => 12:00 [7] => 12:30
        [8] => 13:00 [9] => 13:30 [10] => 14:00 [11] => 14:30
        [12] => 15:00 [13] => 15:30 [14] => 16:00 [15] => 16:30
        [16] => 17:00 [17] => 17:30 [18] => 18:00 [19] => 18:30
        [20] => 19:00 [21] => 19:30 [22] => 20:00 [23] => 20:30
        [24] => 21:00
      )

Demo on 3v4l.org