我有这个功能:
$starDate = "2018-03-10";
$endDate = "2018-03-15";
private static function getDefaultEmptyArray($starDate,$endDate)
{
$returnArray=array();
$begin = new DateTime( $starDate );
$end = new DateTime( $endDate );
$end->add(new DateInterval('P1D'));
$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($begin, $interval, $end);
foreach ($period as $dt) {
$returnArray[$dt->format("Y-m-d")]['clicks'] = 0;
$returnArray[$dt->format("Y-m-d")]['payout'] = 0;
$returnArray[$dt->format("Y-m-d")]['sales'] = 0;
}
return $returnArray;
}
那就是给我一个像这样的数组:
["2018-03-10"]=>
{
["clicks"]=>"0"
["payout"]=>"0"
["sales"]=>"0"
}
......
["2018-03-15"]=>
{
["clicks"]=>"0"
["payout"]=>"0"
["sales"]=>"0"
}
是否在2018-03-10和2018-03-15之间返回一个范围日期数组。
我的问题是,我如何更新此功能,以便在00AM 01AM 02AM ...... 22PM,23PM等数组中回复我当天的小时数,如天数范围。
答案 0 :(得分:0)
不要在开始日期添加1天的间隔,而是向他们添加一小时的间隔:
$interval = DateInterval::createFromDateString('1 hour');
之后,您只需输出循环中的当前时间:
foreach ($period as $dt) {
$returnArray[$dt->format("Y-m-d HA")]['clicks'] = 0;
$returnArray[$dt->format("Y-m-d HA")]['payout'] = 0;
$returnArray[$dt->format("Y-m-d HA")]['sales'] = 0;
}