teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

加筆修正

2021/01/05 00:40

投稿

退会済みユーザー
answer CHANGED
@@ -1,3 +1,66 @@
1
1
  基本的には、カウント用の変数を0で初期化して用意し、
2
2
  echo文の箇所で変数を++(インクリメント)するだけです。
3
- もちろん、3パターンそれぞれでカウントするためには、変数が3つ必要ですよね。
3
+ もちろん、3パターンそれぞれでカウントするためには、変数が3つ必要ですよね。
4
+
5
+ それと、elseifを使う場合と単にifを使う場合とで
6
+ 意味合いが変わってしまうところもあるので、
7
+ ズバリ書き直してみました。
8
+
9
+ ```php
10
+ <?php
11
+ echo <<< EOF
12
+ <html>
13
+ <head>
14
+ <meta charset="UTF-8">
15
+ <title>PHP</title>
16
+ </head>
17
+ <body>
18
+ <table border="1">
19
+ <tr>
20
+ EOF;
21
+
22
+ // 変数の初期化は、主な処理が始まる前にやる
23
+ $count_30 = 0;
24
+ $count_5 = 0;
25
+ $count_3 = 0;
26
+
27
+ for ($i = 1; $i <=1000; $i++) {
28
+ if ($i % 30 === 0) { // 30の倍数であることを確認したときの処理がここだから
29
+ echo "T,S,\n";
30
+ $count_30++; // 30の倍数用カウンターを+1
31
+ } elseif ($i % 5 === 0) { // 30の倍数でなく5の倍数であることを確認したときの処理がここだから
32
+ echo "T\n";
33
+ $count_5++; // 5の倍数用カウンターを+1
34
+ } elseif ($i % 3 === 0) { // 30の倍数でなく5の倍数でもなく3の倍数であることを確認したときの処理がここだから
35
+ echo "S\n";
36
+ $count_3++; // 3の倍数用カウンターを+1
37
+ } else {
38
+ echo "$i\n";
39
+ }
40
+
41
+ if ($i % 30 === 0) { // 30の倍数であることを確認したときの処理がここだから
42
+ $count_30++; // 30の倍数用カウンターを+1
43
+ }
44
+ if ($i % 5 === 0) { // 5の倍数であることを確認したときの処理がここだから
45
+ $count_5++; // 5の倍数用カウンターを+1
46
+ }
47
+ if ($i % 3 === 0) { // 3の倍数であることを確認したときの処理がここだから
48
+ $count_3++; // 3の倍数用カウンターを+1
49
+ }
50
+ }
51
+
52
+ // カウントした結果を出力するなら、主な処理が終わった後にやる
53
+ echo $count_30 . "\n";
54
+ echo $count_5 . "\n";
55
+ echo $count_3 . "\n";
56
+
57
+ echo <<< EOF
58
+ </tr>
59
+ </table>
60
+ </body>
61
+ </html>
62
+ EOF;
63
+
64
+ ```
65
+
66
+ と認識しました。

1

加筆

2021/01/05 00:40

投稿

退会済みユーザー
answer CHANGED
@@ -1,2 +1,3 @@
1
1
  基本的には、カウント用の変数を0で初期化して用意し、
2
- echo文の箇所で変数を++(インクリメント)するだけです。
2
+ echo文の箇所で変数を++(インクリメント)するだけです。
3
+ もちろん、3パターンそれぞれでカウントするためには、変数が3つ必要ですよね。