表題の通り日付と曜日を出力するんですが、「選択された年数分」のところが、もっとシンプルな記述にならないか考えています。
1年は365日か366日だということを踏まえてロジックを書くことはできないでしょうか?
php
1<!doctype html> 2<html> 3<head> 4<meta charset="UTF-8"> 5<title>samaple</title> 6</head> 7<body> 8<?php 9//曜日の配列を作成する 10$array_week = array('日', '月', '火', '水', '木', '金', '土'); 11//現在の年 12$from = date('y'); 13//プルダウンの選択値 14for ($i = 1; $i <= 5; $i++) { 15 $option_year .= '<option value="' . $i . '">' . $i . '</option>' . "\n"; 16} 17?> 18<form action="" method="post"> 19<select name="years"> 20<?php echo $option_year ?> 21</select>年分 22<input type="submit" name="btn" value="送信"> 23</form> 24<?php 25if (isset($_POST['btn'])) { 26 $years = $_POST['years']; 27 //1年間*入力値の日数を取得 28 for ($i = 1; $i <= 12; $i++) { 29 //選択値の分ループ 30 for ($j = 0; $j < $years; $j++) { 31 //1年の日数と選択値に合わせタイムスタンプを取得 32 $timestamp = mktime(0, 0, 0, $i, 1, date('Y') + $j); 33 //日付を取得していく 34 $days += date('t', $timestamp); 35 } 36 } 37 echo '<table border="1">' . "\n"; 38 //取得日付まで繰り返す 39 for ($i = 0; $i < $days; $i++) { 40 //今年の1月1日のタイムスタンプ取得 41 $first = mktime(0, 0, 0, 1, 1 + $i, $from); 42 //日付を取得 43 $date = date('Y/m/d', $first); 44 //1月1日の曜日を取得 45 $week = date('w', $first); 46 echo '<tr>' . "\n" 47 . '<td>' . $date . '</td>' . "\n" 48 . '<td>' . $array_week[$week] . '</td>' . "\n" 49 . '</tr>' . "\n"; 50 } 51 echo '</table>' . "\n"; 52} 53?> 54</body> 55</html> 56コード
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。