In diesem kleinen Beispiel geht es um die Ausgabe aller Tage eines Monats als Kalenderansicht in einer Tabelle. Die spätere Ausgabe würde wie folgt aussehen:

Der Funktion kann optional ein bestimmter Monat mit Jahresangabe als Parameter übergeben werden, sonst wird der aktuelle Monat dargestellt:
<?php
// Kalender eines Monats erzeugen (per Table)
function show_calendar($month = 0, $year = 0) {
// Timestamp für den gewählten Monat erzeugen, falls kein Datum angegeben wurde,
// dann das aktuelle nehmen.
$month_timestamp = ($month == 0 ? time() : mktime(12, 0, 0, $month, 1, $year));
// Kopf der Tabelle
$output = '<table style="text-align:center">'
. '<tr style="font-weight:bold">'
. '<td>Mo</td><td>Di</td><td>Mi</td><td>Do</td><td>Fr</td>'
. '<td>Sa</td><td>So</td>'
. '</tr>'
. '<tr>';
// Ersten Wochentag des Monats ermitteln und bis dahin Leerzellen hinzufügen
$first_day = date('w', $month_timestamp);
$fill_count = ($first_day == 0 ? 6 : $first_day - 1);
$output .= str_repeat('<td> </td>', $fill_count);
// Monatstage auflisten
$day_count = date('t', $month_timestamp);
for ($i = 1; $i <= $day_count; $i++) {
// Tageszelle einfügen
$output .= '<td>' . $i . '</td>';
// Neue Zeile nach 7 Spalten
if (++$fill_count % 7 == 0) {
$output .= '</tr><tr>';
}
}
// Letzte Reihe mit Leerzellen auffüllen
while ($fill_count++ % 7 != 0) {
$output .= '<td> </td>';
}
// Tabelle schließen
$output .= '</tr>'
. '</table>';
// Kalender zurückgeben
return $output;
}
?>
Aufgerufen werden kann die Funktion wie folgt:
<?php
// Beispielaufruf 1: Aktueller Monat
echo show_calendar();
// Beispielaufruf 2: Vorgegebener Monat
echo show_calendar(1, 2009)
?>