オリジナルカレンダー書き方

<?php
//2020-01-01の変数
$MasterDate = date('Y-m-d',strtotime('2020-01-01'));

//曜日の配列化
$youbi = array(
"月",
"火",
"水",
"木",
"金",
"土",
"日"
);

echo "<table border='1'>";

//月のスタート位置カウント初期化
$count2 = 0;

for($i=0; $i<=11; $i++){
	//月のカウント
	$month = date('n',strtotime("$MasterDate +$i month"));
	
	//月の日数を配列化
	$MonthCount = array(date('t',strtotime("$MasterDate +$i month")));
	
	//月の出力
	echo "<tr><th colspan='7'>{$month}月</th></tr><tr>";
	
	//曜日の出力
	foreach($youbi as $val){
		echo "<th>{$val}</th>";
	}
	echo "</tr><tr>";

	//週の折り返しカウント
	$count = 1;
	
	//月のスタート位置設定※配列化しても良い
	if($i == 0){
		$c = -1;
	} else if($i == 1){
		$c = -4;
	} else if($i == 2){
		$c = -5;
	} else if($i == 3){
		$c = -1;
	} else if($i == 4){
		$c = -3;
	} else if($i == 5){
		$c = 1;
	} else if($i == 6){
		$c = -1;
	} else if($i == 7){
		$c = -4;
	} else if($i == 8){
		$c = 0;
	} else if($i == 9){
		$c = -2;
	} else if($i == 10){
		$c = -5;
	} else if($i == 11){
		$c = 0;
	}
	
	//日数の出力
	for($c; $c<=$MonthCount[0]; $c++){
		//月のスタート位置空テーブル出力
		if($c <= 0 && $i == $count2){
			echo "<td></td>";
		}
		//空の後、正規位置スタート
		if($c >= 1){
			echo "<td>{$c}</td>";
		}
		//週の折り返し
		if($count == 7){
			echo "</tr><tr>";
			$count = 0;
		}
		//週の折り返しカウント
		$count++;
	}
	//月のスタート位置カウント
	$count2++;
}
echo "</table>";
オリジナルカレンダー書き方
トップへ戻る