我有这个foreach
循环:
foreach($courses as $course){ //$course is just course name
$day = $dowMap[$course_day[$course]-1]; //$day = Sun/Mon...
$date = date('Y-m-d', strtotime("next ".$day, strtotime(SEMESTER_START))); //first lectur in semester
while (strtotime($date) <= strtotime(SEMESTER_END)) {
if(!array_key_exists($course, $date_arr)){
$date_arr[$course] = '';
$date_arr[$course]++;
}else{
$date_arr[$course]++;
}
$date = date ("Y-m-d", strtotime("+7 day", strtotime($date)));
}
}
它实际上并不复杂,即时创建数组 - $date_arr
,其中键是课程名称,值是学期开始和结束之间的日期数。
所以,如果在2016-01-01(学期开始)和2016-04-12(学期结束)之间有15个星期日,并且课程在星期日每周进行一次,那么阵列将包含这一部分:
["some_course"] => 15
一切正常,但最后一个课程的价值总是比它应该少1。
知道我在这个循环中缺少什么?或者更确切地说为什么在$courses
数组中最后一次执行的最后一次执行丢失了? THX