Всем привет. Сегодня я решил рассказать о том, как генерировать календарь на языке программирования PHP.
Что такое календарь с точки зрения разработчика? Это — совокупность года, фиксированного набора месяцев и постоянно меняющегося набора дней в каждом из месяцев. Так же в календаре присутствует понятие недель. Несложными математическими и логическими вычислениями можно смело выявить, что максимальное число недель в месяце может равняться шести.
Сразу хочу сказать, что генерировать календарь можно динамически, просто зная год и месяц. Нам не нужно будет создавать большие массивы, для хранения количества дней в месяце и т.п. Все что нам понадобится — это пара циклов.
$fromYear = 2016; //С какого года будет календарь $toYear = 2017; //До какого года будет календарь for($y = $fromYear; $y <= $toYear; ++$y) { //цикл по годам for($m = 1; $m < 13; ++$m) { //цикл по месяцам $firstDayNumber = date('N', strtotime(date($y.'-'.$m.'-1'))); $lastDayInMonth = date('t', strtotime(date($y.'-'.$m.'-1'))); echo '<table> <tr> <th colspan="7">'.$m.' '.$y.'</th> </tr> <tr> <th>Пн</th> <th>Вт</th> <th>Ср</th> <th>Чт</th> <th>Пт</th> <th>Сб</th> <th>Вс</th> </tr>'; $day = 1; for($w = 0; $w < 6; ++$w) { //Недели echo '<tr>'; for($d = 1; $d < 8; ++$d) { //Дни echo '<td>'; if(--$firstDayNumber < 1 && $day <= $lastDayInMonth) { echo $day++; } echo '</td>'; } echo '</tr>'; } echo '</table>'; } }