質問編集履歴

4

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

2017/01/16 09:56

投稿

mi_
mi_

スコア80

test CHANGED
File without changes
test CHANGED
@@ -503,3 +503,203 @@
503
503
 
504
504
 
505
505
  sur1,sur2,フリーペーパーなどを直接記入せず、変数で処理できればと思います。
506
+
507
+
508
+
509
+
510
+
511
+
512
+
513
+ ---
514
+
515
+ こちらのルール違反かもしれませんが、ご回答いただいたことをもとにまずこのようにしてみました。
516
+
517
+
518
+
519
+ ```ここに言語を入力
520
+
521
+ <?php
522
+
523
+
524
+
525
+ $survey_q = array (
526
+
527
+ "sur1" => "当店をお知りになったきっかけは何ですか?",
528
+
529
+ "sur2" => "お住まいの市町村はどちらですか?",
530
+
531
+ "sur3" => "当店におこしいただくまでの時間はどのくらいですか?",
532
+
533
+ );
534
+
535
+
536
+
537
+
538
+
539
+
540
+
541
+ $survey= array(
542
+
543
+ "sur1"=> array("紹介",
544
+
545
+ "看板",
546
+
547
+ "チラシ",
548
+
549
+
550
+
551
+ "フリーペーパー" => array ("雑誌A",
552
+
553
+ "雑誌B",
554
+
555
+ "雑誌C",
556
+
557
+ "雑誌D"),
558
+
559
+
560
+
561
+ "ネット" => array ("ホームページ",
562
+
563
+ "EPARK",
564
+
565
+ "エキテン",
566
+
567
+ "LINE",
568
+
569
+ "Facebook",
570
+
571
+ "Instagram",
572
+
573
+ "その他")
574
+
575
+ ),
576
+
577
+
578
+
579
+ "sur2"=> array("A市","B市","D市","E郡","その他のA県内","B県","その他の県"),
580
+
581
+ "sur3"=> array("車で5分以内","車で10分以内","車で20分以内","車で30分以内","それ以上")
582
+
583
+
584
+
585
+ );
586
+
587
+
588
+
589
+
590
+
591
+ foreach ($survey_q as $key => $value){
592
+
593
+ $select_key = $key;
594
+
595
+ print $value;
596
+
597
+ print '<br><br>';
598
+
599
+ //print $select_key;
600
+
601
+
602
+
603
+ //
604
+
605
+ foreach($survey[$select_key] as $key => $choiceData1) {
606
+
607
+ // 複数選択肢か判定
608
+
609
+ if(is_array($choiceData1)) {
610
+
611
+ // 複数選択肢の項目表示
612
+
613
+ echo $key . PHP_EOL;
614
+
615
+ // 複数選択肢表示
616
+
617
+ foreach($choiceData1 as $choiceData2) {
618
+
619
+ echo $choiceData2 . PHP_EOL;
620
+
621
+ }
622
+
623
+ }
624
+
625
+ else {
626
+
627
+ // sur1,2,3直下の選択肢表示
628
+
629
+ echo $choiceData1 . PHP_EOL;
630
+
631
+ }
632
+
633
+ }
634
+
635
+
636
+
637
+ print '<br><br><br>';
638
+
639
+ }
640
+
641
+
642
+
643
+
644
+
645
+
646
+
647
+ print '<br><br><br>';
648
+
649
+
650
+
651
+
652
+
653
+
654
+
655
+
656
+
657
+ ?>
658
+
659
+ ```
660
+
661
+
662
+
663
+ 結果このように表示されました。これをもとに少しずつ目的の状態まで変えていきたいと思います。ご回答いただいた皆様、本当にありがとうございました。
664
+
665
+
666
+
667
+ ```ここに言語を入力
668
+
669
+ 当店をお知りになったきっかけは何ですか?
670
+
671
+
672
+
673
+ 紹介 看板 チラシ フリーペーパー 雑誌A 雑誌B 雑誌C 雑誌D ネット ホームページ EPARK エキテン LINE Facebook Instagram その他
674
+
675
+
676
+
677
+
678
+
679
+ お住まいの市町村はどちらですか?
680
+
681
+
682
+
683
+ A市 B市 D市 E郡 その他のA県内 B県 その他の県
684
+
685
+
686
+
687
+
688
+
689
+ 当店におこしいただくまでの時間はどのくらいですか?
690
+
691
+
692
+
693
+ 車で5分以内 車で10分以内 車で20分以内 車で30分以内 それ以上
694
+
695
+
696
+
697
+
698
+
699
+
700
+
701
+
702
+
703
+
704
+
705
+ ```

3

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

2017/01/16 09:56

投稿

mi_
mi_

スコア80

test CHANGED
File without changes
test CHANGED
@@ -467,3 +467,39 @@
467
467
 
468
468
 
469
469
  お手数おかけしますが、よろしくお願いします。
470
+
471
+
472
+
473
+
474
+
475
+ 追記
476
+
477
+ あやふやな質問で申し訳ありません。
478
+
479
+ 具体的に、
480
+
481
+ ・選択肢の数だけループを回したいと思っています。
482
+
483
+ ・配列の中身が、配列だったり連想配列だったりしていますが、その状況にあわせたループの作り方がわかりません。
484
+
485
+ ・配列の中身を下記のようなループで表現したいのですが、どのようにしたらいいかわかりませんでした。
486
+
487
+
488
+
489
+ 大外のループ(sur1,sur2,sur3などがあるだけ回す)
490
+
491
+ 外のループ sur1の中の紹介、看板、チラシなどを中身のあるだけ回す。
492
+
493
+ フリーペーパー部分のような、配列を持った部分をさらにループで回す。
494
+
495
+ 外のループ sur2の中身分回す
496
+
497
+ 外のループ sur3の中身分回す
498
+
499
+
500
+
501
+ のようなイメージをしています。
502
+
503
+
504
+
505
+ sur1,sur2,フリーペーパーなどを直接記入せず、変数で処理できればと思います。

2

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

2017/01/16 07:51

投稿

mi_
mi_

スコア80

test CHANGED
File without changes
test CHANGED
@@ -102,6 +102,24 @@
102
102
 
103
103
  print '<br><br><br>';
104
104
 
105
+
106
+
107
+
108
+
109
+ //試してみてうまくいかなかったコードです。
110
+
111
+ //このようにすれば、フリーペーパーの中身は表示されますが、sur1やフリーペーパーをあらかじめ入力するのではなく、変数で入れたいのですが、その変数の取得方法が分かりませんでした。
112
+
113
+ foreach( $survey['sur1']['フリーペーパー'] as $value ){
114
+
115
+ echo $value."<br>";
116
+
117
+ }
118
+
119
+
120
+
121
+
122
+
105
123
  ?>
106
124
 
107
125
  ```
@@ -134,6 +152,18 @@
134
152
 
135
153
  array(4) { [0]=> string(7) "雑誌A" [1]=> string(7) "雑誌B" [2]=> string(7) "雑誌C" [3]=> string(7) "雑誌D" }
136
154
 
155
+
156
+
157
+ 雑誌A
158
+
159
+ 雑誌B
160
+
161
+ 雑誌C
162
+
163
+ 雑誌D
164
+
165
+
166
+
137
167
  ```
138
168
 
139
169
 
@@ -376,7 +406,7 @@
376
406
 
377
407
  }
378
408
 
379
- <br><br><br>
409
+ <br><br><br><br><br><br>雑誌A<br>雑誌B<br>雑誌C<br>雑誌D<br>
380
410
 
381
411
  ```
382
412
 

1

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

2017/01/16 07:30

投稿

mi_
mi_

スコア80

test CHANGED
File without changes
test CHANGED
@@ -110,7 +110,7 @@
110
110
 
111
111
 
112
112
 
113
- 上記のPHPに対してブラウザに表示された内容です。
113
+ 上記のPHPに対してブラウザに表示された内容のコピペです。
114
114
 
115
115
 
116
116
 
@@ -118,6 +118,8 @@
118
118
 
119
119
 
120
120
 
121
+ ```ここに言語を入力
122
+
121
123
  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) "それ以上" } }
122
124
 
123
125
 
@@ -132,40 +134,292 @@
132
134
 
133
135
  array(4) { [0]=> string(7) "雑誌A" [1]=> string(7) "雑誌B" [2]=> string(7) "雑誌C" [3]=> string(7) "雑誌D" }
134
136
 
137
+ ```
138
+
139
+
140
+
141
+
142
+
143
+ ブラウザのソースのコピペです。
144
+
145
+ ```ここに言語を入力
146
+
147
+
148
+
149
+ array(3) {
150
+
151
+ ["sur1"]=>
152
+
153
+ array(5) {
154
+
155
+ [0]=>
156
+
157
+ string(6) "紹介"
158
+
159
+ [1]=>
160
+
161
+ string(6) "看板"
162
+
163
+ [2]=>
164
+
165
+ string(9) "チラシ"
166
+
167
+ ["フリーペーパー"]=>
168
+
169
+ array(4) {
170
+
171
+ [0]=>
172
+
173
+ string(7) "雑誌A"
174
+
175
+ [1]=>
176
+
177
+ string(7) "雑誌B"
178
+
179
+ [2]=>
180
+
181
+ string(7) "雑誌C"
182
+
183
+ [3]=>
184
+
185
+ string(7) "雑誌D"
186
+
187
+ }
188
+
189
+ ["ネット"]=>
190
+
191
+ array(7) {
192
+
193
+ [0]=>
194
+
195
+ string(18) "ホームページ"
196
+
197
+ [1]=>
198
+
199
+ string(5) "EPARK"
200
+
201
+ [2]=>
202
+
203
+ string(12) "エキテン"
204
+
205
+ [3]=>
206
+
207
+ string(4) "LINE"
208
+
209
+ [4]=>
210
+
211
+ string(8) "Facebook"
212
+
213
+ [5]=>
214
+
215
+ string(9) "Instagram"
216
+
217
+ [6]=>
218
+
219
+ string(9) "その他"
220
+
221
+ }
222
+
223
+ }
224
+
225
+ ["sur2"]=>
226
+
227
+ array(7) {
228
+
229
+ [0]=>
230
+
231
+ string(4) "A市"
232
+
233
+ [1]=>
234
+
235
+ string(4) "B市"
236
+
237
+ [2]=>
238
+
239
+ string(4) "D市"
240
+
241
+ [3]=>
242
+
243
+ string(4) "E郡"
244
+
245
+ [4]=>
246
+
247
+ string(19) "その他のA県内"
248
+
249
+ [5]=>
250
+
251
+ string(4) "B県"
252
+
253
+ [6]=>
254
+
255
+ string(15) "その他の県"
256
+
257
+ }
258
+
259
+ ["sur3"]=>
260
+
261
+ array(5) {
262
+
263
+ [0]=>
264
+
265
+ string(16) "車で5分以内"
266
+
267
+ [1]=>
268
+
269
+ string(17) "車で10分以内"
270
+
271
+ [2]=>
272
+
273
+ string(17) "車で20分以内"
274
+
275
+ [3]=>
276
+
277
+ string(17) "車で30分以内"
278
+
279
+ [4]=>
280
+
281
+ string(12) "それ以上"
282
+
283
+ }
284
+
285
+ }
286
+
287
+ <br><br><br>array(5) {
288
+
289
+ [0]=>
290
+
291
+ string(6) "紹介"
292
+
293
+ [1]=>
294
+
295
+ string(6) "看板"
296
+
297
+ [2]=>
298
+
299
+ string(9) "チラシ"
300
+
301
+ ["フリーペーパー"]=>
302
+
303
+ array(4) {
304
+
305
+ [0]=>
306
+
307
+ string(7) "雑誌A"
308
+
309
+ [1]=>
310
+
311
+ string(7) "雑誌B"
312
+
313
+ [2]=>
314
+
315
+ string(7) "雑誌C"
316
+
317
+ [3]=>
318
+
319
+ string(7) "雑誌D"
320
+
321
+ }
322
+
323
+ ["ネット"]=>
324
+
325
+ array(7) {
326
+
327
+ [0]=>
328
+
329
+ string(18) "ホームページ"
330
+
331
+ [1]=>
332
+
333
+ string(5) "EPARK"
334
+
335
+ [2]=>
336
+
337
+ string(12) "エキテン"
338
+
339
+ [3]=>
340
+
341
+ string(4) "LINE"
342
+
343
+ [4]=>
344
+
345
+ string(8) "Facebook"
346
+
347
+ [5]=>
348
+
349
+ string(9) "Instagram"
350
+
351
+ [6]=>
352
+
353
+ string(9) "その他"
354
+
355
+ }
356
+
357
+ }
358
+
359
+ <br><br><br>array(4) {
360
+
361
+ [0]=>
362
+
363
+ string(7) "雑誌A"
364
+
365
+ [1]=>
366
+
367
+ string(7) "雑誌B"
368
+
369
+ [2]=>
370
+
371
+ string(7) "雑誌C"
372
+
373
+ [3]=>
374
+
375
+ string(7) "雑誌D"
376
+
377
+ }
378
+
379
+ <br><br><br>
380
+
381
+ ```
382
+
383
+
384
+
385
+
386
+
387
+
388
+
389
+
390
+
391
+
392
+
393
+ 上記を元に、ブラウザに下記のように出力したいと思っていますが、上記のような配列をもとに、選択肢の数だけ出力するのは可能でしょうか?
394
+
135
395
 
136
396
 
137
397
  ---
138
398
 
399
+ アンケート
400
+
401
+ ここにアンケート本文
402
+
403
+
404
+
139
- 上記を元に、ブウザに下記ように出力したいと思っていますが、上記のような配列をもとに、選択肢の数だけ出力するのは可能でしょうか?
405
+ 〇紹介 〇看板 〇チシ フリーペーパー【 〇雑誌A 〇雑誌B 〇雑誌C 〇雑誌D 】 ネット 【 〇ホームページ 〇EPARK 〇エキテン 〇LINE 〇Facebook 〇Instagram 〇そ他 】
406
+
407
+
408
+
409
+ ここにアンケート本文
410
+
411
+ 〇A市 〇B市 〇D市 〇E郡 〇その他のA県内 〇B県 〇その他の県
412
+
413
+
414
+
415
+ ここにアンケート本文
416
+
417
+ 〇車で5分以内 〇車で10分以内 〇車で20分以内 〇車で30分以内 〇それ以上
140
418
 
141
419
 
142
420
 
143
421
  ---
144
422
 
145
- アンケート
146
-
147
- ここにアンケート本文
148
-
149
-
150
-
151
- 〇紹介 〇看板 〇チラシ フリーペーパー【 〇雑誌A 〇雑誌B 〇雑誌C 〇雑誌D 】 ネット 【 〇ホームページ 〇EPARK 〇エキテン 〇LINE 〇Facebook 〇Instagram 〇その他 】
152
-
153
-
154
-
155
- ここにアンケート本文
156
-
157
- 〇A市 〇B市 〇D市 〇E郡 〇その他のA県内 〇B県 〇その他の県
158
-
159
-
160
-
161
- ここにアンケート本文
162
-
163
- 〇車で5分以内 〇車で10分以内 〇車で20分以内 〇車で30分以内 〇それ以上
164
-
165
-
166
-
167
- ---
168
-
169
423
 
170
424
 
171
425
  上記のように書き出すことが可能であれば、この選択肢を登録する画面や、DBへの書き込み、DBからの書き出しを検討したいと思っています。難解すぎたり、非効率であれば、別の方法を使いたいとも思っていますが、DBへの負荷?などを考えると上記のようにした方がいいような気がしています。