祝日やスケジュールなど、「特定の日」を強調表示するなどのためのデータを配列から流し込む事例です。
祝日配列
$holiday_arr = array( '0101'=>'元日', '0114'=>'成人の日', '0211'=>'建国記念日' );
DateTimeオブジェクトから出力しやすい形式で日付をキーとして、名称を並べた配列にします。
祝日を当該の日に組み込む
元となるカレンダー部分の処理は下記です。
DateTimeオブジェクトをformatして、祝日配列のキーと対応させることで、存在すれば配列に祝日名を組み込みます。
$now = new DateTime(); $last = $now->format('t'); for($i=1; $i<=$last; $i++) { $week = $tmpdt->format('w');// 曜日を取得 // ※※祝日判定用に月日文字列を準備※※ $tmpdt_str = $tmpdt->format('md'); /* * ここに月初めの週の前を埋める処理 * */ // 配列に日付をセットする部分 $calendar[$j]['day'] = $i; // ※※月日文字列に該当する項目が祝日配列にあれば、追加する。※※ $calendar[$j]['holiday'] = isset($holiday_arr[$tmpdt_str])?$holiday_arr[$tmpdt_str]:''; $j++; $tmpdt->modify("+1 day"); /* * ここに月末日の週を金曜まで空要素で埋める処理 * */ }