Всем привет. Сегодня я решил рассказать о том, как генерировать календарь на языке программирования 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>';
}
}