回答編集履歴

1

追記

2015/10/26 07:44

投稿

KenjiObata
KenjiObata

スコア440

test CHANGED
@@ -3,3 +3,205 @@
3
3
  $words の設定値を教えていただけないでしょうか?
4
4
 
5
5
  foreachの参照元に $words['a']が設定されていますが、掲載されているソースには、$wordsが宣言されていないようです。
6
+
7
+
8
+
9
+ ソース確認いたしました。
10
+
11
+ 3か所に間違いと思われる個所がございました。(コメントをご参照ください)
12
+
13
+ されたいことがあっているかどうか判断しかねますが、文法エラーはなくなりました。
14
+
15
+
16
+
17
+
18
+
19
+ ```php
20
+
21
+ <?php
22
+
23
+ $errorm = 's-non-used';
24
+
25
+
26
+
27
+
28
+
29
+ //キーワードの直積の一覧を作成
30
+
31
+ //全変数を宣言
32
+
33
+
34
+
35
+ $k['a'] = array
36
+
37
+ (
38
+
39
+
40
+
41
+ 'product' => 'pc,phone,heater',
42
+
43
+ 'event' => '',
44
+
45
+ 'star' => '',
46
+
47
+ 'number' => '',
48
+
49
+ 'trouble' => '',
50
+
51
+ 'real' => '',
52
+
53
+ 'desire' => '',
54
+
55
+ 'price' => '5800,4200,3400,980,1980,580',
56
+
57
+ 'labor' => '今売れてます,安い,配送無料,無料保証,サービス第一,安全第一,他社よりすごい,今すぐお値引き,係員にお申し付けください',
58
+
59
+
60
+
61
+ );
62
+
63
+
64
+
65
+ //各変数にエラーフラグを格納
66
+
67
+ foreach ($k['a'] as $key => $value)
68
+
69
+ {
70
+
71
+ if($value === '')
72
+
73
+ {
74
+
75
+ $value = $errorm;
76
+
77
+
78
+
79
+ //本来はelseでGETから変数を取得しています。
80
+
81
+ }
82
+
83
+ }
84
+
85
+
86
+
87
+ //各変数をカンマで切り分けて配列にする
88
+
89
+ foreach ($k['a'] as $key => $value)
90
+
91
+ {
92
+
93
+ if($value === $errorm)
94
+
95
+ {
96
+
97
+ unset($value);
98
+
99
+ }
100
+
101
+ else
102
+
103
+ {
104
+
105
+ //修正点①
106
+
107
+ //ここでカンマ区切りのデータを配列化していますが、$kに反映されていませんでした。
108
+
109
+ $k['a'][$key] = explode( ',', preg_replace ("/,+/",',',$value));
110
+
111
+ }
112
+
113
+ }
114
+
115
+
116
+
117
+ $words = $k;
118
+
119
+ $k = '';
120
+
121
+
122
+
123
+ //全nameに対しての繰り返し処理ex)product,price,star...
124
+
125
+ foreach ($words['a'] as $key => $value)
126
+
127
+ {
128
+
129
+
130
+
131
+ //受け入れ配列の要素数を入力配列の要素数分増やす
132
+
133
+ if($k === '')
134
+
135
+ {
136
+
137
+ $k = $value;
138
+
139
+ }
140
+
141
+
142
+
143
+ //修正点2
144
+
145
+ // 上記if 文のelse時のみ実行されますが、$words配列1個目が必ず処理されていません 1件目の"product"が処理されていませんでした。
146
+
147
+
148
+
149
+ $t = 0;
150
+
151
+ //ここから下でエラーが出てます。
152
+
153
+
154
+
155
+ //新しく入れる分重複要素を増やす
156
+
157
+ foreach($k as $value2)
158
+
159
+ {
160
+
161
+ foreach($value as $i)
162
+
163
+ {
164
+
165
+ $depot[] = $value2;
166
+
167
+ }
168
+
169
+ }
170
+
171
+
172
+
173
+ //増やした重複要素に新しく入れる分を全パターン入れる
174
+
175
+ foreach($k as $i)
176
+
177
+ {
178
+
179
+ foreach ($value as $value2)
180
+
181
+ {
182
+
183
+ // 修正点3
184
+
185
+ // $depot への代入文法に間違いがございました。(2次配列の宣言後に代入)
186
+
187
+
188
+
189
+ $depot[$t] = array($key=>$value2);
190
+
191
+ ++$t;
192
+
193
+ }
194
+
195
+ }
196
+
197
+
198
+
199
+ $k = $depot;
200
+
201
+ unset($depot);
202
+
203
+ }
204
+
205
+ ?>
206
+
207
+ ```