回答編集履歴

4

要求に従いコードを変更

2016/03/07 23:58

投稿

shi_ue
shi_ue

スコア4437

test CHANGED
@@ -1,44 +1,34 @@
1
- 連想配列にあるものを表示するってことですね。
2
-
3
- ```PHP
4
-
5
- <?php
6
-
7
- $data = [
8
-
9
- 2016 => [1,2,3,4,5,6,7,8,9,10,11,12],
10
-
11
- 2017 => [1,2,3,4,5,6,7,8,9,10,11,12]
12
-
13
- ];
14
-
15
- ```
16
-
17
- というデータが提供されているとします。
18
-
19
1
  ```PHP
20
2
 
21
3
  <table>
22
4
 
23
5
  <?php
24
6
 
7
+ $year = 2016;
8
+
25
- foreach ($data as $year => $months) {
9
+ while($year <= date('Y')) {
26
10
 
27
11
  echo "<tr><td>{$year}年</td>";
28
12
 
29
- foreach ($months as $month) {
13
+ for ($month = 1; $month <= 12; $month++) {
30
14
 
31
- if ($year >= date('Y') && $month > (int)date('n')) {
15
+ if (sprintf('%04d%02d', $year, $month) > date('Ym')) {
32
16
 
33
17
  echo '<td>&nbsp;</td>';
34
18
 
35
19
  }
36
20
 
21
+ else {
22
+
37
- echo '<td><a href="'.$year.'-'.sprintf('%02d',$month).'">'.$month.'月</a></td>';
23
+ echo '<td><a href="'.$year.'-'.sprintf('%02d',$month).'">'.$month.'月</a></td>';
24
+
25
+ }
38
26
 
39
27
  }
40
28
 
41
29
  echo "</tr>";
30
+
31
+ $year++;
42
32
 
43
33
  }
44
34
 
@@ -51,3 +41,9 @@
51
41
  修正してみました。
52
42
 
53
43
  どうでしょうか?
44
+
45
+
46
+
47
+ 他人のコードをコピーして使うのではなく、何をやっているのか理解するようにしてくださいね。
48
+
49
+ 本当に単純なことしかしていませんので・・・

3

再度修正

2016/03/07 23:58

投稿

shi_ue
shi_ue

スコア4437

test CHANGED
@@ -1,31 +1,53 @@
1
+ 連想配列にあるものを表示するってことですね。
2
+
1
3
  ```PHP
2
4
 
3
- $data = [];
5
+ <?php
4
6
 
5
- $fromYear = 2014;
7
+ $data = [
6
8
 
9
+ 2016 => [1,2,3,4,5,6,7,8,9,10,11,12],
7
10
 
11
+ 2017 => [1,2,3,4,5,6,7,8,9,10,11,12]
8
12
 
9
- for ($y = $fromYear; $y <= date('Y'); $y++) {
13
+ ];
10
14
 
11
- for ($m=1; $m<=12; $m++) {
15
+ ```
12
16
 
13
- if ($m > date('n') && $y >= date('Y')) {
17
+ というデータが提供されているとします。
14
18
 
15
- break;
19
+ ```PHP
20
+
21
+ <table>
22
+
23
+ <?php
24
+
25
+ foreach ($data as $year => $months) {
26
+
27
+ echo "<tr><td>{$year}年</td>";
28
+
29
+ foreach ($months as $month) {
30
+
31
+ if ($year >= date('Y') && $month > (int)date('n')) {
32
+
33
+ echo '<td>&nbsp;</td>';
16
34
 
17
35
  }
18
36
 
37
+ echo '<td><a href="'.$year.'-'.sprintf('%02d',$month).'">'.$month.'月</a></td>';
38
+
39
+ }
40
+
19
- $data[$y][] = $m;
41
+ echo "</tr>";
20
42
 
21
43
  }
44
+
45
+ ?>
46
+
47
+ </table>
22
48
 
23
49
  ```
24
50
 
25
51
  修正してみました。
26
52
 
27
- $fromYear ~ 現在までが配列$dataに二次元配列として格納されます。
28
-
29
-
30
-
31
53
  どうでしょうか?

2

コードの更新

2016/03/07 13:21

投稿

shi_ue
shi_ue

スコア4437

test CHANGED
@@ -1,21 +1,31 @@
1
1
  ```PHP
2
2
 
3
- $data = [2016 => []];
3
+ $data = [];
4
4
 
5
- for ($i=0; $i<12; $i++) {
5
+ $fromYear = 2014;
6
6
 
7
- if ($i >= date('n')) {
8
7
 
9
- continue;
10
8
 
11
- }
9
+ for ($y = $fromYear; $y <= date('Y'); $y++) {
12
10
 
11
+ for ($m=1; $m<=12; $m++) {
12
+
13
+ if ($m > date('n') && $y >= date('Y')) {
14
+
15
+ break;
16
+
17
+ }
18
+
13
- $data[2016][] = $i;
19
+ $data[$y][] = $m;
14
20
 
15
21
  }
16
22
 
17
23
  ```
18
24
 
19
- みたいな感じですか?
25
+ 修正してまし
20
26
 
21
- 質問の意図よく分からないのでが・・・
27
+ $fromYear ~ 現在まで配列$dataに二次元配列として格納されま
28
+
29
+
30
+
31
+ どうでしょうか?

1

コードの間違いの変更

2016/03/07 13:10

投稿

shi_ue
shi_ue

スコア4437

test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  for ($i=0; $i<12; $i++) {
6
6
 
7
- if ($i == date('n')) {
7
+ if ($i >= date('n')) {
8
8
 
9
9
  continue;
10
10