달력의 일수와 스타일을 계산하는 간단한 달력을 만드는 PHP 개발
달력의 일수와 스타일을 계산하는 사용자 정의 함수 계산 방법입니다.
1) 지난 달의 일수를 계산합니다. 매월 1일이 일요일이 아닌 경우 지난 달의 마지막 날을 기준으로 계산해야 합니다.
2) 일수를 순회합니다. 이번 달에 쉬는 날이면 특별한 CSS 스타일을 추가하세요
3) 일요일, 토요일, 근무일 세 가지 상황에서 다음 달의 일수를 계산하세요
<?php function caculate($calendar) { //$calendar 通过threshold方法计算后的数据 $days = $calendar['days']; $firstDayOfWeek = $calendar['firstDayOfWeek'];//本月第一天的星期 $lastDayOfWeek = $calendar['lastDayOfWeek'];//本月最后一天的星期 $lastMonthOfLastDay = $calendar['lastMonthOfLastDay'];//上个月的最后一天 $year = $calendar['year']; $month = $calendar['month']; $dates = array(); if($firstDayOfWeek != 7) { $lastDays = array(); $current = $lastMonthOfLastDay;//上个月的最后一天 for ($i = 0; $i < $firstDayOfWeek; $i++) { array_push($lastDays, $current);//添加上一个月的日期天数 $current--; } $lastDays = array_reverse($lastDays);//反序 foreach ($lastDays as $index => $day) { array_push($dates, array('day' => $day, 'tdclass' => ($index ==0 ?'rest':''), 'pclass' => 'outter')); } } //本月日历信息 for ($i = 1; $i <= $days; $i++) { $isRest = $this->_checkIsRest($year, $month, $i); //判断是否是休息天 array_push($dates, array('day' => $i, 'tdclass' => ($isRest ?'rest':''), 'pclass' => '')); } //下月日历信息 if($lastDayOfWeek == 7) {//最后一天是星期日 $length = 6; } elseif($lastDayOfWeek == 6) {//最后一天是星期六 $length = 0; }else { $length = 6 - $lastDayOfWeek; } for ($i = 1; $i <= $length; $i++) { array_push($dates, array('day' => $i, 'tdclass' => ($i==$length ?'rest':''), 'pclass' => 'outter')); } return $dates; } ?>
참고:
array_push() 함수는 첫 번째 매개변수의 배열 끝을 푸시합니다. 하나 이상의 요소를 추가하고 새 배열의 길이를 반환합니다.
array_reverse() 함수는 배열을 역순으로 반환합니다.