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)
]];