我正在尝试创建一个 php 报告,其中数据按月和天分组(然后是每天的时间段 - 但这可能会等待一段时间)。格式类似于:
2013->四月->星期一->数据
2013->四月->星期二->数据
...
2012->十二月->星期一->数据
...
我有以下代码:
$lastmonth = strtotime ( '-'.$monthrange.' month' , strtotime ("now")) ;
$arr_months = array();
$timestampformonths = strtotime("now");
$arr_daysofweek = array();
for ($i = 0; $i < $monthrange; $i++) {
$arr_months[] = strftime('%B', $timestampformonths);
$timestampformonths = strtotime('-1 month', $timestampformonths);
}
//tempdump($arr_months);tempstop();//April,March,February...
//build array of days of week backward, starting today
$timestampfordays = strtotime("now");
$arr_daysofweek = array();
for ($i = 0; $i < 7; $i++) {
$arr_daysofweek[] = strftime('%A', $timestampfordays);
$timestampfordays = strtotime('-1 day', $timestampfordays);
}
foreach ($arr_daysofweek as $dayoftheweek) {
foreach ($arr_months as $currmonth) {
$currmonth_datetime = strtotime($currmonth);
$prevmonth_datetime = strtotime('-1 month', $currmonth_datetime);
for($i = strtotime($dayoftheweek, $currmonth_datetime); ( ($i >= $lastmonth) && ($i <= strtotime("now")) && ($currmonth_datetime > $prevmonth_datetime) ); $i = strtotime('-1 week', $i)) {
echo date('l Y-m-d', $i) . "<br />";//Monday 2012-04-02 00:00:00
}
}
}
这段代码有一个问题:有重复。例如,输出当前以'Wednesday 2013-04-03'开始,然后通过'Wednesday 2012-04-04'正常显示,然后再次显示'Wednesday 2013-03-06';我认为这是天循环内的月份循环。
请随时完全重做此代码!我什至不介意删除 $arr_daysof 周的 foreach 循环,而是为每天硬编码几个循环——尽管这并不优雅。
谢谢!
* 代码更新:我想我已经解决了重复的问题;如果需要,稍后会发布更多*