回答編集履歴

2

バグの修正

2017/04/04 05:52

投稿

kunai
kunai

スコア5405

test CHANGED
@@ -30,8 +30,6 @@
30
30
 
31
31
  . '</tr>' . "\n";
32
32
 
33
- $date->modify('+1 days');
34
-
35
33
  }
36
34
 
37
35
 

1

ソースコードの単純化

2017/04/04 05:52

投稿

kunai
kunai

スコア5405

test CHANGED
@@ -10,25 +10,17 @@
10
10
 
11
11
  if (isset($_POST['btn'])) {
12
12
 
13
- //今年の1月1日でDatetimeをインスタンス化
13
+ //最大の1月1日でDatetimeをインスタンス化
14
14
 
15
- $date = new Datetime(date('y').'-1-1');
16
-
17
- $maxDate = new Datetime(date('y').'-1-1');
18
-
19
-
20
-
21
- //取得する最大年を追加
22
-
23
- $maxDate->modify('+'.$_POST['years'].' years');
15
+ $maxDate = new Datetime(((int)date('y') + $_POST['years']).'-1-1');
24
16
 
25
17
 
26
18
 
27
19
  echo '<table border="1">' . "\n";
28
20
 
29
- //日表示
21
+ //最大(n年後1月1日)になったらループを抜ける
30
22
 
31
- do {
23
+ for($date = new Datetime(date('y').'-1-1'); $date < $maxDate; $date->modify('+1 days')) {
32
24
 
33
25
  echo '<tr>' . "\n"
34
26
 
@@ -40,9 +32,9 @@
40
32
 
41
33
  $date->modify('+1 days');
42
34
 
43
- } while($date < $maxDate);
35
+ }
44
36
 
45
- //最大日(n年後の1月1日)になったらループを抜ける
37
+
46
38
 
47
39
  echo '</table>' . "\n";
48
40