<?php
// 当月1日
$start = new DateTime();
$start->modify('first day of this months');
// 当月末日
$end = new DateTime();
$end->modify('last day of this months');
0 => array('name' => '日', 'class' => 'sun'), 1 => array('name' => '月', 'class' => 'std'), 2 => array('name' => '火', 'class' => 'std'), 3 => array('name' => '水', 'class' => 'std'), 4 => array('name' => '木', 'class' => 'std'), 5 => array('name' => '金', 'class' => 'std'), 6 => array('name' => '土', 'class' => 'sat'), );
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<style>
.sun {
color: #F00;
}
.std {
color: #000;
}
.sat {
color: #00F;
}
</style>
</head>
<body>
<table>
<tr>
<?php foreach (array_column($week, 'name') as $w_name): ?>
<td><?= $w_name;?></td>
<?php endforeach; ?>
</tr>
<?php do{ ?>
<tr>
<?php
foreach (array_column($week, 'class') as $w_k => $w_class):
if ($start->format('w') != $w_k) {
$d = ' ';
$class = '';
} else {
$d = $start->format('d');
$class = ' class="' . $w_class . '"';
$start->modify('+1 days');
}
?>
<td<?= $class;?>><?= $d;?></td>
<?php
if ($start >= $end) {
break;
}
endforeach;
?>
</tr>
<?php } while ($start >= $end); ?>
</table>
</body>
</html>
PD9waHAKLy8g5b2T5pyIMeaXpQokc3RhcnQgPSBuZXcgRGF0ZVRpbWUoKTsKJHN0YXJ0LT5tb2RpZnkoJ2ZpcnN0IGRheSBvZiB0aGlzIG1vbnRocycpOwovLyDlvZPmnIjmnKvml6UKJGVuZCA9IG5ldyBEYXRlVGltZSgpOwokZW5kLT5tb2RpZnkoJ2xhc3QgZGF5IG9mIHRoaXMgbW9udGhzJyk7CiR3ZWVrID0gYXJyYXkoCiAgICAwID0+IGFycmF5KCduYW1lJyA9PiAn5pelJywgJ2NsYXNzJyA9PiAnc3VuJyksCiAgICAxID0+IGFycmF5KCduYW1lJyA9PiAn5pyIJywgJ2NsYXNzJyA9PiAnc3RkJyksCiAgICAyID0+IGFycmF5KCduYW1lJyA9PiAn54GrJywgJ2NsYXNzJyA9PiAnc3RkJyksCiAgICAzID0+IGFycmF5KCduYW1lJyA9PiAn5rC0JywgJ2NsYXNzJyA9PiAnc3RkJyksCiAgICA0ID0+IGFycmF5KCduYW1lJyA9PiAn5pyoJywgJ2NsYXNzJyA9PiAnc3RkJyksCiAgICA1ID0+IGFycmF5KCduYW1lJyA9PiAn6YeRJywgJ2NsYXNzJyA9PiAnc3RkJyksCiAgICA2ID0+IGFycmF5KCduYW1lJyA9PiAn5ZyfJywgJ2NsYXNzJyA9PiAnc2F0JyksCik7Cj8+CjwhRE9DVFlQRSBodG1sPgo8aHRtbD4KICAgIDxoZWFkPgogICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KICAgICAgICA8dGl0bGU+PC90aXRsZT4KICAgICAgICA8c3R5bGU+CiAgICAgICAgICAgIC5zdW4gewogICAgICAgICAgICAgICAgY29sb3I6ICNGMDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLnN0ZCB7CiAgICAgICAgICAgICAgICBjb2xvcjogIzAwMDsKICAgICAgICAgICAgfQogICAgICAgICAgICAuc2F0IHsKICAgICAgICAgICAgICAgIGNvbG9yOiAjMDBGOwogICAgICAgICAgICB9CiAgICAgICAgPC9zdHlsZT4KICAgIDwvaGVhZD4KICAgIDxib2R5PgogICAgICAgIDx0YWJsZT4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPD9waHAgZm9yZWFjaCAoYXJyYXlfY29sdW1uKCR3ZWVrLCAnbmFtZScpIGFzICR3X25hbWUpOiA/PgogICAgICAgICAgICAgICAgPHRkPjw/PSAkd19uYW1lOz8+PC90ZD4KICAgICAgICAgICAgICAgIDw/cGhwIGVuZGZvcmVhY2g7ID8+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDw/cGhwIGRveyA/PgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8P3BocAogICAgICAgICAgICAgICAgZm9yZWFjaCAoYXJyYXlfY29sdW1uKCR3ZWVrLCAnY2xhc3MnKSBhcyAkd19rID0+ICR3X2NsYXNzKToKICAgICAgICAgICAgICAgICAgICBpZiAoJHN0YXJ0LT5mb3JtYXQoJ3cnKSAhPSAkd19rKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRkID0gJyZuYnNwOyc7CiAgICAgICAgICAgICAgICAgICAgICAgICRjbGFzcyA9ICcnOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRkID0gJHN0YXJ0LT5mb3JtYXQoJ2QnKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGNsYXNzID0gJyBjbGFzcz0iJyAuICR3X2NsYXNzIC4gJyInOwogICAgICAgICAgICAgICAgICAgICAgICAkc3RhcnQtPm1vZGlmeSgnKzEgZGF5cycpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICA8dGQ8Pz0gJGNsYXNzOz8+Pjw/PSAkZDs/PjwvdGQ+CiAgICAgICAgICAgICAgICA8P3BocAogICAgICAgICAgICAgICAgaWYgKCRzdGFydCA+PSAkZW5kKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbmRmb3JlYWNoOwogICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPD9waHAgfSB3aGlsZSAoJHN0YXJ0ID49ICRlbmQpOyA/PgogICAgICAgIDwvdGFibGU+CiAgICA8L2JvZHk+CjwvaHRtbD4K