質問編集履歴
2
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -36,6 +36,16 @@
|
|
36
36
|
|
37
37
|
</div>
|
38
38
|
|
39
|
+
<div class="form-list">
|
40
|
+
|
41
|
+
<p>カラー</p>
|
42
|
+
|
43
|
+
<input type="radio" id="color01" name="color" value="red"><label for="color01">赤</label>
|
44
|
+
|
45
|
+
<input type="radio" id="color02" name="color" value="blue,green"><label for="color02">青または緑</label>
|
46
|
+
|
47
|
+
</div>
|
48
|
+
|
39
49
|
<button class="submit" value="check">検索</button>
|
40
50
|
|
41
51
|
</form>
|
@@ -124,7 +134,9 @@
|
|
124
134
|
|
125
135
|
[
|
126
136
|
|
127
|
-
"type"=>"1"
|
137
|
+
"type"=>"1",
|
138
|
+
|
139
|
+
"color"=>"red"
|
128
140
|
|
129
141
|
],
|
130
142
|
|
@@ -132,18 +144,24 @@
|
|
132
144
|
|
133
145
|
"type"=>"2"
|
134
146
|
|
147
|
+
"color"=>"red"
|
148
|
+
|
135
149
|
],
|
136
150
|
|
137
151
|
[
|
138
152
|
|
139
153
|
"type"=>"3"
|
140
154
|
|
155
|
+
"color"=>"blue"
|
156
|
+
|
141
157
|
],
|
142
158
|
|
143
159
|
[
|
144
160
|
|
145
161
|
"type"=>"4"
|
146
162
|
|
163
|
+
"color"=>"green"
|
164
|
+
|
147
165
|
]
|
148
166
|
|
149
167
|
]
|
@@ -203,3 +221,31 @@
|
|
203
221
|
複数のtypeがヒットするのでしょうか?
|
204
222
|
|
205
223
|
ご教示のほどよろしくお願いします。
|
224
|
+
|
225
|
+
|
226
|
+
|
227
|
+
追記
|
228
|
+
|
229
|
+
質問の趣旨が少し変わってしまうので指摘がありましたら別で質問いたします。
|
230
|
+
|
231
|
+
|
232
|
+
|
233
|
+
papinianusさんのご回答を元に項目がtype以外にも必要だったため
|
234
|
+
|
235
|
+
```php
|
236
|
+
|
237
|
+
$result = array_filter($data["test"],function($x) use($type,$color) {
|
238
|
+
|
239
|
+
return (is_null($type) || in_array($x["type"], $type_split, true)) &&
|
240
|
+
|
241
|
+
(is_null($color) || in_array($x["color"], $color_split, true));
|
242
|
+
|
243
|
+
});
|
244
|
+
|
245
|
+
としましたが、この状態ですと全ての項目に当てはまっているものした表示されませんでした。
|
246
|
+
|
247
|
+
例:カラー項目の青または緑のみを押した場合typeでいうと3と4を表示したいがcolorがチェックされていないため何も表示されない状態です。
|
248
|
+
|
249
|
+
※htmlとphpの配列にcolorの項目を追記しています。
|
250
|
+
|
251
|
+
```
|
1
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -8,7 +8,13 @@
|
|
8
8
|
|
9
9
|
|
10
10
|
|
11
|
-
現状はvalueが1つであれば動く状態です。valueの中が2つ以上(value="1,2,3")の場合は動かないです。
|
11
|
+
~~現状はvalueが1つであれば動く状態です。valueの中が2つ以上(value="1,2,3")の場合は動かないです。~~
|
12
|
+
|
13
|
+
訂正
|
14
|
+
|
15
|
+
現状はvalueが1つであれば正常に検索され該当の配列のみが表示されます。
|
16
|
+
|
17
|
+
valueの中が2つ以上(value="1,2,3")の場合は下記のphpに記述しましたが"チェックされてない"が表示されます。
|
12
18
|
|
13
19
|
|
14
20
|
|
@@ -104,9 +110,11 @@
|
|
104
110
|
|
105
111
|
$type = filter_input( INPUT_POST, "type" );
|
106
112
|
|
107
|
-
$type_split = preg_split("/,/", $type); //,で区切って取って見ましたが動きませんでした。
|
113
|
+
$type_split = preg_split("/,/", $type); //,で区切って取って見ましたが動きませんでした。追記:配列にカンマ区切りでそれぞれのあたいは入るのですが、正常の検索されまでんでした。
|
114
|
+
|
108
|
-
|
115
|
+
//下記のif文のところですと"チェックされてない"が表示されます。
|
116
|
+
|
109
|
-
$type_implode = implode($type_split);//区切ったもの文字列にしたのですが"12"となってしまいうまく行きませんでした。
|
117
|
+
$type_implode = implode($type_split);//区切ったもの文字列にしたのですが"12"となってしまいうまく行きませんでした。追記:結果が"12"となってしまうため同じく"チェックされてない"が表示されます。
|
110
118
|
|
111
119
|
|
112
120
|
|