PHPでカレンダーを作成する際の計算がわかりません
PHPを勉強し始めた初心者です。
参考書を片手にカレンダーを作成しているのですが、
その参考書に記載されている計算の意味がわかりません。
///////以下抜粋
<?php
//年月日を取得する
if ($_SERVER['REQUEST_METHOD'] = "POST") {
$yyyy = $_POST["yyyy"];
$mm = $_POST["mm"];
}
else {
$yyyy = date("Y");
$mm = date("m");
}
//年月選択リストを表示する
echo "<form method=\"POST\" action=\"" . $_SERVER['PHP_SELF'] . "\">";
echo "<table><tr><td>";
//年
echo "<select name=\"yyyy\">";
for ($i = 2000; $i <= 2020; $i++) {
echo "<option";
if ($i == $yyyy) {
echo " selected ";
}
echo ">$i";
}
echo "</select>年";
//月
echo "<select name=\"mm\">";
for ($i = 1; $i <= 12; $i++) {
echo "<option";
if ($i == $mm) {
echo " selected ";
}
echo ">$i";
}
echo "</select>月";
echo "</td>";
echo "<td><input type=\"submit\" value=\"表示\" name=\"sub1\"></td>";
echo "</tr></table></form>";
//カレンダーを表示する
echo"<table border=\"1\">\n
<tr>\n
<td>日</td>\n
<td>月</td>\n
<td>火</td>\n
<td>水</td>\n
<td>木</td>\n
<td>金</td>\n
<td>土</td>
</tr>";
//1日の曜日を取得する
$wd1 = date("w", mktime(0,0,0,$mm,1,$yyyy));
$d = 0;
$lastd = date("d", mktime(0,0,0,$mm + 1, 0, $yyyy));
for ($i = 0; $i <= 5; $i++) {
if ($d >= $lastd) {break;}
echo "<tr>";
for ($j = 0; $j <= 6; $j++) {
$d = $i * 7 + $j - $wd1 + 1;
if ($d > $lastd or $d < 1) {
echo "<td> </td>";
}
else {
echo "<td>$d</td>";
}
}
echo "</tr>";
}
echo "</table>";
?>
///////////////////
上記のソースの
for ($i = 0; $i <= 5; $i++) {
if ($d >= $lastd) {break;}
echo "<tr>";
for ($j = 0; $j <= 6; $j++) {
$d = $i * 7 + $j - $wd1 + 1;
if ($d > $lastd or $d < 1) {
echo "<td> </td>";
}
else {
echo "<td>$d</td>";
}
}
echo "</tr>";
}
この部分で、なぜ5なのかとかなぜこういう計算式なのかとかがわかりません。
どなたかこのソースの意味をご教授願いませんでしょうか?
よろしくお願いします。
お礼
ご検証頂きましてありがとうございます。。 現状5.5で8以降にupする必要がありupすると文字化けを起こすためこのコードかと思ってました。 色々やったりしてみまして… ini_set('default_charset', 'SJIS-WIN'); この1行の追加で文字化けは治ったようです。 検証さえ出来ず大変助かりました。 ありがとうございました。