回答編集履歴

1

追記

2021/09/20 10:37

投稿

tanat
tanat

スコア18727

test CHANGED
@@ -1,3 +1,17 @@
1
+ 回答
2
+
3
+ ---
4
+
5
+
6
+
7
+ > ワードプレスのWP_Queryで、複数のタクソノミーで絞り込みする際
8
+
9
+
10
+
11
+ WordPressの事はあんまり知らないので、配列の構造についてのみの回答です。
12
+
13
+
14
+
1
15
  ```PHP
2
16
 
3
17
  foreach ($var as $key => $value) {
@@ -37,3 +51,227 @@
37
51
  }
38
52
 
39
53
  ```
54
+
55
+
56
+
57
+
58
+
59
+ 捕捉
60
+
61
+ ---
62
+
63
+
64
+
65
+ 質問タイトルの
66
+
67
+ > phpにおける配列の操作について。連想配列内に、重複せずに同じキーを持つ配列を追加したい
68
+
69
+
70
+
71
+ からの推測ですが、おそらく
72
+
73
+
74
+
75
+ ```PHP
76
+
77
+ $args = array(
78
+
79
+ 'post_type' => 'post',
80
+
81
+ 'tax_query' => array(
82
+
83
+ 'relation' => 'AND',
84
+
85
+ array(
86
+
87
+ 'taxonomy' => 'tax1',
88
+
89
+ 'field' => 'slug',
90
+
91
+ 'terms' => 'action1',
92
+
93
+ ),
94
+
95
+ array(
96
+
97
+ 'taxonomy' => 'tax2',
98
+
99
+ 'field' => 'slug',
100
+
101
+ 'terms' => 'action2',
102
+
103
+ ),
104
+
105
+ ),
106
+
107
+ );
108
+
109
+ ```
110
+
111
+
112
+
113
+ の質問部分のキーが実際にどうなっているかを把握されていない様に思います。
114
+
115
+
116
+
117
+ ```PHP
118
+
119
+ $args = array(
120
+
121
+ 'post_type' => 'post',
122
+
123
+ 'tax_query' => array(
124
+
125
+ 'relation' => 'AND',
126
+
127
+ array(
128
+
129
+ 'taxonomy' => 'tax1',
130
+
131
+ 'field' => 'slug',
132
+
133
+ 'terms' => 'action1',
134
+
135
+ ),
136
+
137
+ array(
138
+
139
+ 'taxonomy' => 'tax2',
140
+
141
+ 'field' => 'slug',
142
+
143
+ 'terms' => 'action2',
144
+
145
+ ),
146
+
147
+ ),
148
+
149
+ );
150
+
151
+ var_dump($args);
152
+
153
+
154
+
155
+ ```
156
+
157
+
158
+
159
+ とすれば、以下の様に該当部分のキーが0,1であることが確認出来ます。
160
+
161
+
162
+
163
+ ```
164
+
165
+ array(2) {
166
+
167
+ ["post_type"]=>
168
+
169
+ string(4) "post"
170
+
171
+ ["tax_query"]=>
172
+
173
+ array(3) {
174
+
175
+ ["relation"]=>
176
+
177
+ string(3) "AND"
178
+
179
+ [0]=>
180
+
181
+ array(3) {
182
+
183
+ ["taxonomy"]=>
184
+
185
+ string(4) "tax1"
186
+
187
+ ["field"]=>
188
+
189
+ string(4) "slug"
190
+
191
+ ["terms"]=>
192
+
193
+ string(7) "action1"
194
+
195
+ }
196
+
197
+ [1]=>
198
+
199
+ array(3) {
200
+
201
+ ["taxonomy"]=>
202
+
203
+ string(4) "tax2"
204
+
205
+ ["field"]=>
206
+
207
+ string(4) "slug"
208
+
209
+ ["terms"]=>
210
+
211
+ string(7) "action2"
212
+
213
+ }
214
+
215
+ }
216
+
217
+ }
218
+
219
+
220
+
221
+ ```
222
+
223
+
224
+
225
+ 配列に対して、キーを指定しない括弧(`[]`)で値を追加すると
226
+
227
+ その時点で整数値のキーの最大値の次の値が自動的にキーになるので、回答の様なコードになります。
228
+
229
+
230
+
231
+ この辺りは以下の様なコードを試して挙動を見てみると分かりやすいかもしれません。
232
+
233
+ [PHPマニュアル 配列](https://www.php.net/manual/ja/book.array.php)のサンプルコードを試してみるのもお勧めです。
234
+
235
+
236
+
237
+ ```PHP
238
+
239
+
240
+
241
+ $arr[] = 1;
242
+
243
+ $arr[2] = 2;
244
+
245
+ $arr[] = 3;
246
+
247
+ var_dump($arr);
248
+
249
+
250
+
251
+ /**
252
+
253
+ 結果
254
+
255
+ array(3) {
256
+
257
+ [0]=>
258
+
259
+ int(1)
260
+
261
+ [2]=>
262
+
263
+ int(2)
264
+
265
+ [3]=>
266
+
267
+ int(3)
268
+
269
+ }
270
+
271
+
272
+
273
+ **/
274
+
275
+
276
+
277
+ ```