回答編集履歴

2

加筆修正

2020/01/21 12:33

投稿

退会済みユーザー
test CHANGED
@@ -161,3 +161,53 @@
161
161
  var_export($result);
162
162
 
163
163
  ```
164
+
165
+
166
+
167
+ ついでに、質問文中にあった構造をちゃんと入力としておきたい場合は、
168
+
169
+ こういう関数を書いておくと私のサンプルコードのような形式になるよ、と。
170
+
171
+
172
+
173
+ ```php
174
+
175
+ function apply_unique_key($arr) {
176
+
177
+ $result = [];
178
+
179
+ foreach ($arr as $item) {
180
+
181
+ if (isset($item['name'])) {
182
+
183
+ $result2 = [];
184
+
185
+ foreach ($item['post_arr'] as $item2) {
186
+
187
+ if (isset($item2['id'])) {
188
+
189
+ $result2[$item2['id']] = $item2;
190
+
191
+ }
192
+
193
+ }
194
+
195
+ $result[$item['name']] = [
196
+
197
+ 'name' => $item['name'],
198
+
199
+ 'post_arr' => $result2
200
+
201
+ ];
202
+
203
+
204
+
205
+ }
206
+
207
+ }
208
+
209
+ return $result;
210
+
211
+ }
212
+
213
+ ```

1

見直し

2020/01/21 12:32

投稿

退会済みユーザー
test CHANGED
@@ -47,3 +47,117 @@
47
47
 
48
48
 
49
49
  ユニークキーがつかない、配列の入れ子って、ユニークさを扱うのがちょー面倒なんですけど。
50
+
51
+
52
+
53
+ ほんの、手慰み。
54
+
55
+ ```php
56
+
57
+ <?php
58
+
59
+
60
+
61
+
62
+
63
+ $new_wrapper = [
64
+
65
+ 'nameA' => [
66
+
67
+ 'name' => 'nameA',
68
+
69
+ 'post_arr' => [
70
+
71
+ 3 => ['id'=>3,'type'=>'c']
72
+
73
+ ],
74
+
75
+ ],
76
+
77
+ ];
78
+
79
+
80
+
81
+ $leave_wrapper = [
82
+
83
+ 'nameA' => [
84
+
85
+ 'name' => 'nameA',
86
+
87
+ 'post_arr' => [
88
+
89
+ 1 => ['id'=>1,'type'=>'a']
90
+
91
+ ],
92
+
93
+ ],
94
+
95
+ ];
96
+
97
+
98
+
99
+ /*
100
+
101
+ $new_wrapper = [
102
+
103
+ 'nameC' => [
104
+
105
+ 'name' => 'nameC',
106
+
107
+ 'post_arr' => [
108
+
109
+ 3 => ['id'=>3,'type'=>'c']
110
+
111
+ ],
112
+
113
+ ],
114
+
115
+ ];
116
+
117
+
118
+
119
+ $leave_wrapper = [
120
+
121
+ 'nameA' => [
122
+
123
+ 'name' => 'nameA',
124
+
125
+ 'post_arr' => [
126
+
127
+ 1 => ['id'=>1,'type'=>'a']
128
+
129
+ ],
130
+
131
+ ],
132
+
133
+ ];
134
+
135
+ */
136
+
137
+
138
+
139
+ $result = $new_wrapper;
140
+
141
+ foreach ($leave_wrapper as $key => $arr) {
142
+
143
+ if (isset($result[$key])) {
144
+
145
+ foreach ($arr['post_arr'] as $k => $v) {
146
+
147
+ $result[$key]['post_arr'][$k] = $v;
148
+
149
+ }
150
+
151
+ }
152
+
153
+ else {
154
+
155
+ $result[$key] = $arr;
156
+
157
+ }
158
+
159
+ }
160
+
161
+ var_export($result);
162
+
163
+ ```