PHP: Генерируем календарь

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