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

回答編集履歴

3

加筆修正

2018/06/01 08:40

投稿

退会済みユーザー
answer CHANGED
@@ -28,6 +28,7 @@
28
28
  echo $arr[2] . PHP_EOL;
29
29
  }
30
30
  ```
31
+ 《実行結果》
31
32
  ![実行結果](be7fd169a081c5ba974f687742e008ae.png)
32
33
 
33
34
  `$pdata`のキーはcodeしかないので、`count($pdata)`は1になります。
@@ -78,6 +79,7 @@
78
79
 
79
80
  EOT;
80
81
  ```
82
+ 《実行結果》
81
83
  ![実行結果2](daaa13acfece501dac1c3f4ae04dfd2a.png)
82
84
 
83
85
  また、phpからの離脱を組み合わせることも出来ます。

2

typo修正

2018/06/01 08:40

投稿

退会済みユーザー
answer CHANGED
@@ -31,8 +31,12 @@
31
31
  ![実行結果](be7fd169a081c5ba974f687742e008ae.png)
32
32
 
33
33
  `$pdata`のキーはcodeしかないので、`count($pdata)`は1になります。
34
- `$pdata["code"]`のキーは定義した分あるので、`count($pdata["code"])はこの場合5になります。
34
+ `$pdata["code"]`のキーは定義した分あるので、`count($pdata["code"])`はこの場合5になります。
35
+
35
- for()ループよりもforeach()ループのほうが、カウンター変数を管理しなくて良くてラクです。
36
+ for()ループよりもforeach()ループのほうが、
37
+ カウンター変数を管理しなくて良く、
38
+ 配列を順になぞって処理を行うのにラクです。
39
+
36
40
  複数行出力するecho文は[ヒアドキュメント](http://php.net/manual/ja/language.types.string.php#language.types.string.syntax.heredoc)構文を使ったほうが見やすいです。
37
41
  以上を踏まえて、
38
42
 

1

加筆修正

2018/06/01 08:39

投稿

退会済みユーザー
answer CHANGED
@@ -29,6 +29,7 @@
29
29
  }
30
30
  ```
31
31
  ![実行結果](be7fd169a081c5ba974f687742e008ae.png)
32
+
32
33
  `$pdata`のキーはcodeしかないので、`count($pdata)`は1になります。
33
34
  `$pdata["code"]`のキーは定義した分あるので、`count($pdata["code"])はこの場合5になります。
34
35
  for()ループよりもforeach()ループのほうが、カウンター変数を管理しなくて良くてラクです。
@@ -73,4 +74,48 @@
73
74
 
74
75
  EOT;
75
76
  ```
76
- ![実行結果2](daaa13acfece501dac1c3f4ae04dfd2a.png)
77
+ ![実行結果2](daaa13acfece501dac1c3f4ae04dfd2a.png)
78
+
79
+ また、phpからの離脱を組み合わせることも出来ます。
80
+
81
+ ```php
82
+ <?php
83
+
84
+ $pdata["code"]["A0001"][0] = "A0001";
85
+ $pdata["code"]["A0001"][1] = "白菜(1玉)";
86
+ $pdata["code"]["A0001"][2]= 298;
87
+ $pdata["code"]["K0001"][0] = "K0001";
88
+ $pdata["code"]["K0001"][1] = "いわし(5尾)";
89
+ $pdata["code"]["K0001"][2] = 258;
90
+ $pdata["code"]["A0002"][0] = "A0002";
91
+ $pdata["code"]["A0002"][1] = "九条葱(1パック)";
92
+ $pdata["code"]["A0002"][2] = 258;
93
+ $pdata["code"]["A0003"][0] = "A0003";
94
+ $pdata["code"]["A0003"][1] = "サツマイモ(1袋)";
95
+ $pdata["code"]["A0003"][2] = 180;
96
+ $pdata["code"]["K0002"][0] = "K0002";
97
+ $pdata["code"]["K0002"][1] = "きびなご(1皿)";
98
+ $pdata["code"]["K0002"][2] = 180;
99
+
100
+ ?>
101
+ <table>
102
+ <?php
103
+ foreach ($pdata["code"] as $arr) {
104
+ echo <<<EOT
105
+ <tr>
106
+ <td>${arr[0]}</td>
107
+ <td>${arr[1]}</td>
108
+ <td>${arr[2]}</td>
109
+ </tr>
110
+
111
+ EOT;
112
+ }
113
+ ?>
114
+ </table>
115
+ ```
116
+ 「</tr>」と「EOT;」との間に空の行があるのは、
117
+ それがないと改行コードがつかなくて、「</tr>」と次の「<tr>」が同じ行に出力されてしまうからです。
118
+
119
+ 加えて、単純に0,1,2の順に出力するだけであれば、
120
+ それこそfor()ループを使うこともできますが、
121
+ たかだか3件だしコードが増えて見た目のシンプルさが損なわれるから今回はなしで。