アプリ版:「スタンプのみでお礼する」機能のリリースについて

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></td>");
}
if($i%7==0){print ("</tr>");}
}

?>
</table>

</body>
</html>

for以降の部分が良く分かりません。よろしくお願いします。※上記のスクリプトで正しく表示されることは確認済です。

A 回答 (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></td>");
で月が始まっていない部分はスペースに
>print ("<td>".($i-$first_day)."</td>");
で始まっている部分はその日を表示するようになっています。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!