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

質問編集履歴

4

回答いただいた内容をもとに、動作させてみました。

2017/01/16 09:56

投稿

mi_
mi_

スコア80

title CHANGED
File without changes
body CHANGED
@@ -250,4 +250,104 @@
250
250
 
251
251
  のようなイメージをしています。
252
252
 
253
- sur1,sur2,フリーペーパーなどを直接記入せず、変数で処理できればと思います。
253
+ sur1,sur2,フリーペーパーなどを直接記入せず、変数で処理できればと思います。
254
+
255
+
256
+
257
+ ---
258
+ こちらのルール違反かもしれませんが、ご回答いただいたことをもとにまずこのようにしてみました。
259
+
260
+ ```ここに言語を入力
261
+ <?php
262
+
263
+ $survey_q = array (
264
+ "sur1" => "当店をお知りになったきっかけは何ですか?",
265
+ "sur2" => "お住まいの市町村はどちらですか?",
266
+ "sur3" => "当店におこしいただくまでの時間はどのくらいですか?",
267
+ );
268
+
269
+
270
+
271
+ $survey= array(
272
+ "sur1"=> array("紹介",
273
+ "看板",
274
+ "チラシ",
275
+
276
+ "フリーペーパー" => array ("雑誌A",
277
+ "雑誌B",
278
+ "雑誌C",
279
+ "雑誌D"),
280
+
281
+ "ネット" => array ("ホームページ",
282
+ "EPARK",
283
+ "エキテン",
284
+ "LINE",
285
+ "Facebook",
286
+ "Instagram",
287
+ "その他")
288
+ ),
289
+
290
+ "sur2"=> array("A市","B市","D市","E郡","その他のA県内","B県","その他の県"),
291
+ "sur3"=> array("車で5分以内","車で10分以内","車で20分以内","車で30分以内","それ以上")
292
+
293
+ );
294
+
295
+
296
+ foreach ($survey_q as $key => $value){
297
+ $select_key = $key;
298
+ print $value;
299
+ print '<br><br>';
300
+ //print $select_key;
301
+
302
+ //
303
+ foreach($survey[$select_key] as $key => $choiceData1) {
304
+ // 複数選択肢か判定
305
+ if(is_array($choiceData1)) {
306
+ // 複数選択肢の項目表示
307
+ echo $key . PHP_EOL;
308
+ // 複数選択肢表示
309
+ foreach($choiceData1 as $choiceData2) {
310
+ echo $choiceData2 . PHP_EOL;
311
+ }
312
+ }
313
+ else {
314
+ // sur1,2,3直下の選択肢表示
315
+ echo $choiceData1 . PHP_EOL;
316
+ }
317
+ }
318
+
319
+ print '<br><br><br>';
320
+ }
321
+
322
+
323
+
324
+ print '<br><br><br>';
325
+
326
+
327
+
328
+
329
+ ?>
330
+ ```
331
+
332
+ 結果このように表示されました。これをもとに少しずつ目的の状態まで変えていきたいと思います。ご回答いただいた皆様、本当にありがとうございました。
333
+
334
+ ```ここに言語を入力
335
+ 当店をお知りになったきっかけは何ですか?
336
+
337
+ 紹介 看板 チラシ フリーペーパー 雑誌A 雑誌B 雑誌C 雑誌D ネット ホームページ EPARK エキテン LINE Facebook Instagram その他
338
+
339
+
340
+ お住まいの市町村はどちらですか?
341
+
342
+ A市 B市 D市 E郡 その他のA県内 B県 その他の県
343
+
344
+
345
+ 当店におこしいただくまでの時間はどのくらいですか?
346
+
347
+ 車で5分以内 車で10分以内 車で20分以内 車で30分以内 それ以上
348
+
349
+
350
+
351
+
352
+
353
+ ```

3

具体的に行いたい部分を追記しました。

2017/01/16 09:56

投稿

mi_
mi_

スコア80

title CHANGED
File without changes
body CHANGED
@@ -232,4 +232,22 @@
232
232
 
233
233
  実際には、登録状況で変わる選択肢の状態にあわせてforeachで取り出したいのですが、なかなかうまくいきません。上記のように、配列と配列じゃないものが混ざっているのはNGでしょうか?上記のような配列を作るのは、問題があるのか、また書き出し方(チェックボックスやHTMLタグは不要ですが、条件分岐やループの回し方を知りたいです)等、お知恵をお借りできればと思っています。
234
234
 
235
- お手数おかけしますが、よろしくお願いします。
235
+ お手数おかけしますが、よろしくお願いします。
236
+
237
+
238
+ 追記
239
+ あやふやな質問で申し訳ありません。
240
+ 具体的に、
241
+ ・選択肢の数だけループを回したいと思っています。
242
+ ・配列の中身が、配列だったり連想配列だったりしていますが、その状況にあわせたループの作り方がわかりません。
243
+ ・配列の中身を下記のようなループで表現したいのですが、どのようにしたらいいかわかりませんでした。
244
+
245
+ 大外のループ(sur1,sur2,sur3などがあるだけ回す)
246
+ 外のループ sur1の中の紹介、看板、チラシなどを中身のあるだけ回す。
247
+ フリーペーパー部分のような、配列を持った部分をさらにループで回す。
248
+ 外のループ sur2の中身分回す
249
+ 外のループ sur3の中身分回す
250
+
251
+ のようなイメージをしています。
252
+
253
+ sur1,sur2,フリーペーパーなどを直接記入せず、変数で処理できればと思います。

2

うまくいかなかったコードを追記しました

2017/01/16 07:51

投稿

mi_
mi_

スコア80

title CHANGED
File without changes
body CHANGED
@@ -50,6 +50,15 @@
50
50
  var_dump($survey['sur1']['フリーペーパー']);
51
51
 
52
52
  print '<br><br><br>';
53
+
54
+
55
+ //試してみてうまくいかなかったコードです。
56
+ //このようにすれば、フリーペーパーの中身は表示されますが、sur1やフリーペーパーをあらかじめ入力するのではなく、変数で入れたいのですが、その変数の取得方法が分かりませんでした。
57
+ foreach( $survey['sur1']['フリーペーパー'] as $value ){
58
+ echo $value."<br>";
59
+ }
60
+
61
+
53
62
  ?>
54
63
  ```
55
64
 
@@ -66,6 +75,12 @@
66
75
 
67
76
 
68
77
  array(4) { [0]=> string(7) "雑誌A" [1]=> string(7) "雑誌B" [2]=> string(7) "雑誌C" [3]=> string(7) "雑誌D" }
78
+
79
+ 雑誌A
80
+ 雑誌B
81
+ 雑誌C
82
+ 雑誌D
83
+
69
84
  ```
70
85
 
71
86
 
@@ -187,7 +202,7 @@
187
202
  [3]=>
188
203
  string(7) "雑誌D"
189
204
  }
190
- <br><br><br>
205
+ <br><br><br><br><br><br>雑誌A<br>雑誌B<br>雑誌C<br>雑誌D<br>
191
206
  ```
192
207
 
193
208
 

1

ブラウザに表示された部分をコードブロックで囲みました

2017/01/16 07:30

投稿

mi_
mi_

スコア80

title CHANGED
File without changes
body CHANGED
@@ -54,10 +54,11 @@
54
54
  ```
55
55
 
56
56
 
57
- 上記のPHPに対してブラウザに表示された内容です。
57
+ 上記のPHPに対してブラウザに表示された内容のコピペです。
58
58
 
59
59
  ---
60
60
 
61
+ ```ここに言語を入力
61
62
  array(3) { ["sur1"]=> array(5) { [0]=> string(6) "紹介" [1]=> string(6) "看板" [2]=> string(9) "チラシ" ["フリーペーパー"]=> array(4) { [0]=> string(7) "雑誌A" [1]=> string(7) "雑誌B" [2]=> string(7) "雑誌C" [3]=> string(7) "雑誌D" } ["ネット"]=> array(7) { [0]=> string(18) "ホームページ" [1]=> string(5) "EPARK" [2]=> string(12) "エキテン" [3]=> string(4) "LINE" [4]=> string(8) "Facebook" [5]=> string(9) "Instagram" [6]=> string(9) "その他" } } ["sur2"]=> array(7) { [0]=> string(4) "A市" [1]=> string(4) "B市" [2]=> string(4) "D市" [3]=> string(4) "E郡" [4]=> string(19) "その他のA県内" [5]=> string(4) "B県" [6]=> string(15) "その他の県" } ["sur3"]=> array(5) { [0]=> string(16) "車で5分以内" [1]=> string(17) "車で10分以内" [2]=> string(17) "車で20分以内" [3]=> string(17) "車で30分以内" [4]=> string(12) "それ以上" } }
62
63
 
63
64
 
@@ -65,8 +66,134 @@
65
66
 
66
67
 
67
68
  array(4) { [0]=> string(7) "雑誌A" [1]=> string(7) "雑誌B" [2]=> string(7) "雑誌C" [3]=> string(7) "雑誌D" }
69
+ ```
68
70
 
71
+
72
+ ブラウザのソースのコピペです。
73
+ ```ここに言語を入力
74
+
75
+ array(3) {
76
+ ["sur1"]=>
77
+ array(5) {
78
+ [0]=>
79
+ string(6) "紹介"
80
+ [1]=>
81
+ string(6) "看板"
82
+ [2]=>
83
+ string(9) "チラシ"
84
+ ["フリーペーパー"]=>
85
+ array(4) {
86
+ [0]=>
87
+ string(7) "雑誌A"
88
+ [1]=>
89
+ string(7) "雑誌B"
90
+ [2]=>
91
+ string(7) "雑誌C"
92
+ [3]=>
93
+ string(7) "雑誌D"
94
+ }
95
+ ["ネット"]=>
96
+ array(7) {
97
+ [0]=>
98
+ string(18) "ホームページ"
99
+ [1]=>
100
+ string(5) "EPARK"
101
+ [2]=>
102
+ string(12) "エキテン"
103
+ [3]=>
104
+ string(4) "LINE"
105
+ [4]=>
106
+ string(8) "Facebook"
107
+ [5]=>
108
+ string(9) "Instagram"
109
+ [6]=>
110
+ string(9) "その他"
111
+ }
112
+ }
113
+ ["sur2"]=>
114
+ array(7) {
115
+ [0]=>
116
+ string(4) "A市"
117
+ [1]=>
118
+ string(4) "B市"
119
+ [2]=>
120
+ string(4) "D市"
121
+ [3]=>
122
+ string(4) "E郡"
123
+ [4]=>
124
+ string(19) "その他のA県内"
125
+ [5]=>
126
+ string(4) "B県"
127
+ [6]=>
128
+ string(15) "その他の県"
129
+ }
130
+ ["sur3"]=>
131
+ array(5) {
132
+ [0]=>
133
+ string(16) "車で5分以内"
134
+ [1]=>
135
+ string(17) "車で10分以内"
136
+ [2]=>
137
+ string(17) "車で20分以内"
138
+ [3]=>
139
+ string(17) "車で30分以内"
140
+ [4]=>
141
+ string(12) "それ以上"
142
+ }
143
+ }
144
+ <br><br><br>array(5) {
145
+ [0]=>
146
+ string(6) "紹介"
147
+ [1]=>
148
+ string(6) "看板"
149
+ [2]=>
150
+ string(9) "チラシ"
151
+ ["フリーペーパー"]=>
152
+ array(4) {
153
+ [0]=>
154
+ string(7) "雑誌A"
155
+ [1]=>
156
+ string(7) "雑誌B"
157
+ [2]=>
158
+ string(7) "雑誌C"
159
+ [3]=>
160
+ string(7) "雑誌D"
161
+ }
162
+ ["ネット"]=>
163
+ array(7) {
164
+ [0]=>
165
+ string(18) "ホームページ"
166
+ [1]=>
167
+ string(5) "EPARK"
168
+ [2]=>
169
+ string(12) "エキテン"
170
+ [3]=>
171
+ string(4) "LINE"
172
+ [4]=>
173
+ string(8) "Facebook"
174
+ [5]=>
175
+ string(9) "Instagram"
176
+ [6]=>
177
+ string(9) "その他"
178
+ }
179
+ }
180
+ <br><br><br>array(4) {
181
+ [0]=>
182
+ string(7) "雑誌A"
183
+ [1]=>
184
+ string(7) "雑誌B"
185
+ [2]=>
186
+ string(7) "雑誌C"
187
+ [3]=>
188
+ string(7) "雑誌D"
189
+ }
190
+ <br><br><br>
69
- ---
191
+ ```
192
+
193
+
194
+
195
+
196
+
70
197
  上記を元に、ブラウザに下記のように出力したいと思っていますが、上記のような配列をもとに、選択肢の数だけ出力するのは可能でしょうか?
71
198
 
72
199
  ---