• 締切済み

PHPでカレンダー

PHPを使ってカレンダーを作成しました。が、コードの意味が良く分かりません。 コードは以下の通りです。 <?php if($_GET['num']==''){ $today_year = date("Y"); //4桁の西暦年 $today_month = date("n"); //1~12の月 }else{ $timestamp = mktime(0,0,0,date("n")+$_GET['num'],date("d"),date("Y")); $today_year = date("Y",$timestamp); $today_month = date("n",$timestamp); //1~12月 } $current = mktime(0,0,0,$today_month,1,$today_year); $first_day = date("w",$current); //1日の曜日を0~6に当てはめる $last_day= date("t",$current); //月の日数 ?> <html> <head> <title>カンレンダー</title> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> </head> <body> <h1><?php print (date("Y年m月",$current)); ?>のカレンダー</h1> <table border="1" cellpadding="0" cellspacing="2"> <tr> <th>日</th><th>月</th><th>火</th><th>水</th><th>木</th><th>金</th><th>土</th> </tr> <?php for($i=1; $i<=$first_day+$last_day; $i++){ if($i%7==1){print ("<tr>");} if($i>$first_day){ print ("<td>".($i-$first_day)."</td>"); }else{ print ("<td>&nbsp;</td>"); } if($i%7==0){print ("</tr>");} } ?> </table> </body> </html> for以降の部分が良く分かりません。よろしくお願いします。※上記のスクリプトで正しく表示されることは確認済です。

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

$i は、1から順番に増えていきますけれども、 1 2 3 4 5 6 7 8 9 10 11 12 13 14 …… ですので、 $i を 7 で割った余りが1の時には週の始まりで $i を 7 で割った余りが0の時には、週の終わりです。 それが、 >if($i%7==1){print ("<tr>");} #週の始まり >if($i%7==0){print ("</tr>");} #週の終わり で一組の<tr></tr>が一週間ということですね。 >if($i>$first_day){ の部分は、月の始まり以前かどうかを調べて >print ("<td>&nbsp;</td>"); で月が始まっていない部分はスペースに >print ("<td>".($i-$first_day)."</td>"); で始まっている部分はその日を表示するようになっています。

すると、全ての回答が全文表示されます。

専門家に質問してみよう