Php 以json格式在一年中的月份中的天数中循环
我正在尝试为日历创建一个端点,该端点将用于根据添加事件 我想尝试使用Php 以json格式在一年中的月份中的天数中循环,php,date,datetime,Php,Date,Datetime,我正在尝试为日历创建一个端点,该端点将用于根据添加事件 我想尝试使用json并构建它,然后解析到日历视图中 然后尝试通过合并json数据来添加事件,如下所示: 此时,我正在努力将其他数据导入端点。这就是我到目前为止所做的: //构建变量 $getStart='2020-01-01';//来自$\u GET $monthStartDate=新日期时间($getStart); $monthFinishDate=克隆$monthStartDate; $monthFinishDate->modif
json
并构建它,然后解析到日历视图中
然后尝试通过合并json
数据来添加事件,如下所示:
//构建变量
$getStart='2020-01-01';//来自$\u GET
$monthStartDate=新日期时间($getStart);
$monthFinishDate=克隆$monthStartDate;
$monthFinishDate->modify('12月的最后一天');
$monthInterval=新的日期间隔('P1M');
//设置变量
$monthRange=新日期周期(
$monthStartDate,
$monthInterval,
$monthFinishDate
);
//循环月份
foreach($monthRange作为$month){
//循环日子
$dayStartDate=新日期时间($month->format('M');
$dayFinishDate=克隆$dayStartDate;
$dayFinishDate->modify('next month');
$dayInterval=新的日期间隔('P1D');
$dayRange=新日期周期(
$dayStartDate,
$dayInterval,
$dayFinishDate
);
//构建日历json
$calendar[]=[$month->format('m')=>[
“年”=>$month->格式('Y'),
“月”=>$month->format('F'),
“天”=>[
//此处出错,因为$array中存在循环
foreach($dayRange作为$day){
$day->format('d')=>[
'dayOfWeek'=>$day->格式('l'),
“事件”=>[]
],
}
],
]];
}
//打印出来
echo json_编码($calendar);
我很确定这是因为箭头中的循环,但我想不出任何其他方法来获取当月的天数。您需要首先构建天数数组,因此foreach将创建一个天数数组,然后将完成的数组添加到日历中
$days = [];
foreach( $dayRange as $day ) {
$days[$day->format('d')] = [
'dayOfWeek' => $day->format('l'),
'events' => []
];
}
$calendar[] = [ $month->format('m') => [
'year' => $month->format('Y'),
'month' => $month->format('F'),
'days' => $days
]
];
实际上,不能在数组中使用foreach。在这里,您可以使用一个函数来执行此操作:
函数dayRangeLoop($dayRange){
$result=[];
foreach($dayRange作为$day){
$result[$day->格式('d')]=[
'dayOfWeek'=>$day->格式('l'),
“事件”=>[]
];
}
返回$result;
}
然后在日历构建中调用它:
//构建日历json
$calendar[]=[$month->format('m')=>[
“年”=>$month->格式('Y'),
“月”=>$month->format('F'),
“天”=>dayRangeLoop($dayRange)
]];