【PHP】カレンダーを作成する


PHPで簡易なカレンダーを作成してみました。テーブルタグでHTML出力します。

<?php
$yy = date("Y"); //年
$mm = date("m"); //月

//月末
$last_day = date('j', mktime(0, 0, 0, $mm + 1, 0, $yy)); 

//1日の曜日(0:日 1:月・・)
$first_day_week  = date('w', mktime(0, 0, 0, $mm, 1, $yy));

//--------------
//カレンダー配列
//--------------
$cal = array();
$k = 0;

for($i=1; $i<=$last_day; $i++) {

    if($i==1){
        for($j=0 ;$j<$first_day_week; $j++){
            $cal[$k] ="";
            $k++;
        }
    }

    $cal[$k] = $i;
    $k++;
}

for($i=0; $i< ($k % 7) ;$i++){
    $cal[$k] ="";
    $k++;

}

//--------------
//カレンダー出力
//--------------
echo "<table>\n";
echo "<tr>\n";
echo "<th>日</th><th>月</th><th>火</th><th>水</th><th>木</th><th>金</th><th>土</th>\n";
echo "</tr>\n";
 
$i=0;
foreach ($cal as $key => $value){
    if($i % 7 ==0){
        echo "<tr>\n";
    }

    echo "<td>".$value."</td>";

    $i++;
    if($i % 7 ==0){
        echo "</tr>\n";
    }
}
echo "</table>\n";

PHP: date - Manual
PHP: mktime - Manual
PHP: 代数演算子 - Manual

一度$calという配列に格納してから、HTML出力しています。
剰余(%)演算子をつかって、7で割った余りを利用しています。

関連のある記事

スポンサーリンク

コメントを残す

メールアドレスは公開されません。
また、コメント欄には、必ず日本語を含めてください(スパム対策)。