回答編集履歴

1

訂正版

2016/06/24 06:01

投稿

ttyp03
ttyp03

スコア16998

test CHANGED
@@ -9,3 +9,185 @@
9
9
  ```
10
10
 
11
11
  余談ですが、for文の中には書こうと思えば色々書けますが、わかりづらいコードになるのでお勧めしません。
12
+
13
+
14
+
15
+ ---
16
+
17
+ 訂正版
18
+
19
+ ```PHP
20
+
21
+ <?php
22
+
23
+ $tsuki = '月';
24
+
25
+ $list ="";
26
+
27
+ $list2 ="";
28
+
29
+ $dd = mktime();
30
+
31
+ for( $j = 0; $j < 2; $j++ ){
32
+
33
+ $m = date("n",$dd);
34
+
35
+ $dd = strtotime( date("Y/m/d",$dd) . " 1 month");
36
+
37
+ $list = <<<EOF
38
+
39
+ <h2>$m$tsuki</h2>
40
+
41
+ <table cellspacing="0" summary="calendar">
42
+
43
+ <tr>
44
+
45
+ <td>日</td>
46
+
47
+ <td>月</td>
48
+
49
+ <td>火</td>
50
+
51
+ <td>水</td>
52
+
53
+ <td>木</td>
54
+
55
+ <td>金</td>
56
+
57
+ <td>土</td>
58
+
59
+ </tr>
60
+
61
+ <tr>
62
+
63
+ EOF;
64
+
65
+ print $list;
66
+
67
+
68
+
69
+ // 1日の曜日を取得
70
+
71
+ $wd1 = date("w", mktime(0, 0, 0, $m, 1, $y));
72
+
73
+
74
+
75
+ // その数だけ空のセルを作成
76
+
77
+ for ($i = 1; $i <= $wd1; $i++) {
78
+
79
+ echo "<td> </td>";
80
+
81
+ }
82
+
83
+ $d = 1;
84
+
85
+
86
+
87
+ while (checkdate($m, $d, $y)) {
88
+
89
+
90
+
91
+ // 日曜:赤色
92
+
93
+ if(date("w", mktime(0, 0, 0, $m, $d, $y)) == 0)
94
+
95
+ {
96
+
97
+ echo "<td class='sun'>$d</td>";
98
+
99
+ }
100
+
101
+ // 祝日:赤色
102
+
103
+ else if(!empty($national_holiday[date("Y-m-d", mktime(0, 0, 0, $m, $d, $y))]))
104
+
105
+ {
106
+
107
+ echo "<td class='sun'>$d</td>";
108
+
109
+ }
110
+
111
+ // 本日:シルバー
112
+
113
+ else if ($d == date('j') && $y == date('Y') && $m == date('n'))
114
+
115
+ {
116
+
117
+ echo "<td class='today'>$d</td>";
118
+
119
+ }
120
+
121
+ // 土日祝以外
122
+
123
+ else{
124
+
125
+ echo "<td class='date'>$d</td>";
126
+
127
+ }
128
+
129
+
130
+
131
+ // 週の始まりと終わりでタグを出力
132
+
133
+ if (date("w", mktime(0, 0, 0, $m, $d, $y)) == 6)
134
+
135
+ {
136
+
137
+ // 週を終了
138
+
139
+ echo "</tr>";
140
+
141
+
142
+
143
+ // 次の週がある場合は新たな行を準備
144
+
145
+ if (checkdate($m, $d + 1, $y)) {
146
+
147
+ echo "<tr>";
148
+
149
+ }
150
+
151
+ }
152
+
153
+
154
+
155
+ $d++;
156
+
157
+ }
158
+
159
+
160
+
161
+ // 最後の週の土曜日まで空のセルを作成
162
+
163
+ $wdx = date("w", mktime(0, 0, 0, $m + 1, 0, $y));
164
+
165
+
166
+
167
+ for ($i = 1; $i < 7 - $wdx; $i++)
168
+
169
+ {
170
+
171
+ echo "<td> </td>";
172
+
173
+ }
174
+
175
+
176
+
177
+ $list2 .= <<<EOF
178
+
179
+ </tr>
180
+
181
+ </table>
182
+
183
+ EOF;
184
+
185
+ print $list2;
186
+
187
+ }
188
+
189
+ ?>
190
+
191
+ ```
192
+
193
+ [http://ideone.com/jlNIJP](http://ideone.com/jlNIJP)