Sesuaikan kaedah pengiraan fungsi untuk mengira bilangan hari dan gaya kalendar.
1) Kira bilangan hari dalam bulan lepas Jika hari pertama bulan ini bukan hari Ahad, anda perlu mengiranya berdasarkan hari terakhir bulan lepas
2) Kira bilangan hari dalam bulan ini Bilangan hari dilalui, dan jika hari rehat, tambah gaya css khas
3) Kira bilangan hari dalam bulan berikutnya, dibahagikan kepada tiga situasi , Ahad, Sabtu dan hari bekerja
<?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; } ?>
Nota: Fungsi
array_push() menambah satu atau lebih elemen pada penghujung tatasusunan parameter pertama dan mengembalikan panjang tatasusunan baharu . Fungsi
array_reverse() mengembalikan tatasusunan dalam susunan terbalik.
bahagian seterusnya