回答編集履歴

2

修正

2019/11/21 14:16

投稿

m.ts10806
m.ts10806

スコア80875

test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  $mergeArray['nameinfo']= $hogename[0];
18
18
 
19
- unset($mergeArray['nameinfo']['id']);
19
+ //unset($mergeArray['nameinfo']['id']);
20
20
 
21
21
  $mergeArray['iteminfo']= $itemlist[0]['iteminfo'];
22
22
 
@@ -72,7 +72,7 @@
72
72
 
73
73
  // if($itemlist[$num]['id'] === $data['id']){
74
74
 
75
- unset($data['id']);
75
+ //unset($data['id']);
76
76
 
77
77
  $list[] = [
78
78
 
@@ -103,3 +103,105 @@
103
103
  重複していたらどっちかを残すとかそもそも処理しないとか、それも仕様ですね。
104
104
 
105
105
  仕様・設計に熟考が必要な要件です(そうでなく学習目的ならもっと簡単な仕様から考えた方が良いです)
106
+
107
+
108
+
109
+ > nameinfoの方にはidが欲しいので
110
+
111
+
112
+
113
+ ならこっちにつけないと紐づけにならないと思いますし、
114
+
115
+ 今後のデータの扱いが結構面倒です。
116
+
117
+ ```php
118
+
119
+ array (
120
+
121
+ 1 => //キーにID
122
+
123
+ array (
124
+
125
+ 'nameinfo' =>
126
+
127
+ array (
128
+
129
+ 'name' => 'hogehoge',
130
+
131
+ 'gender' => '男性',
132
+
133
+ ),
134
+
135
+ 'iteminfo' =>
136
+
137
+ array (
138
+
139
+ 0 => '木の枝',
140
+
141
+ 1 => '皮の服',
142
+
143
+ 2 => '鉄の鎧',
144
+
145
+ ),
146
+
147
+ ),
148
+
149
+ 2 => //キーにID
150
+
151
+ array (
152
+
153
+ 'nameinfo' =>
154
+
155
+ array (
156
+
157
+ 'name' => 'hogehoge2',
158
+
159
+ 'gender' => '女性',
160
+
161
+ ),
162
+
163
+ 'iteminfo' =>
164
+
165
+ array (
166
+
167
+ 0 => '鉄の枝',
168
+
169
+ 1 => '鉄の服',
170
+
171
+ 2 => '鉄鉄の鎧',
172
+
173
+ ),
174
+
175
+ ),
176
+
177
+ 3 => //キーにID
178
+
179
+ array (
180
+
181
+ 'nameinfo' =>
182
+
183
+ array (
184
+
185
+ 'name' => 'hogehoge3',
186
+
187
+ 'gender' => '男性',
188
+
189
+ ),
190
+
191
+ 'iteminfo' =>
192
+
193
+ array (
194
+
195
+ 0 => '鋼の枝',
196
+
197
+ 1 => '鋼の服',
198
+
199
+ 2 => '鋼の鎧',
200
+
201
+ ),
202
+
203
+ ),
204
+
205
+ )
206
+
207
+ ```

1

修正

2019/11/21 14:16

投稿

m.ts10806
m.ts10806

スコア80875

test CHANGED
@@ -35,3 +35,71 @@
35
35
  前提や背景、仕様はきちんと提示しましょう。
36
36
 
37
37
  赤の他人である回答者には質問に書いてあることが全てです。
38
+
39
+
40
+
41
+ # 追記された配列を元に。
42
+
43
+
44
+
45
+ 効率的にコードを組もうとしたら、対象の情報の法則性を見つけることです。
46
+
47
+ 本当に提示された通りであれば、2つの配列は同じ順番でidが振られているということ。
48
+
49
+ でしたら、「idが同じだったら」は不要です。
50
+
51
+ ```php
52
+
53
+ $hogename[] = ['id'=>1,'name'=>'hogehoge','gender'=>'男性'];
54
+
55
+ $hogename[] = ['id'=>2,'name'=>'hogehoge2','gender'=>'女性'];
56
+
57
+ $hogename[] = ['id'=>3,'name'=>'hogehoge3','gender'=>'男性'];
58
+
59
+
60
+
61
+ $itemlist[] = ['id'=>1,'iteminfo' => ['木の枝','皮の服','鉄の鎧']];
62
+
63
+ $itemlist[] = ['id'=>2,'iteminfo' => ['鉄の枝','鉄の服','鉄鉄の鎧']];
64
+
65
+ $itemlist[] = ['id'=>3,'iteminfo' => ['鋼の枝','鋼の服','鋼の鎧']];
66
+
67
+
68
+
69
+ $list = [];
70
+
71
+ foreach($hogename as $num=>$data){
72
+
73
+ // if($itemlist[$num]['id'] === $data['id']){
74
+
75
+ unset($data['id']);
76
+
77
+ $list[] = [
78
+
79
+ 'nameinfo'=>$data,
80
+
81
+ 'iteminfo'=>$itemlist[$num]['iteminfo'],
82
+
83
+ ];
84
+
85
+ // }
86
+
87
+ }
88
+
89
+ var_dump($list);
90
+
91
+ ```
92
+
93
+
94
+
95
+ ずれている可能性があるかどうか分からなかったのでこのような形。
96
+
97
+ 配列がそれぞれ作られているので、IDを重複している配列もありえるかもしれません。
98
+
99
+
100
+
101
+ それによって対応方針が全く異なります。
102
+
103
+ 重複していたらどっちかを残すとかそもそも処理しないとか、それも仕様ですね。
104
+
105
+ 仕様・設計に熟考が必要な要件です(そうでなく学習目的ならもっと簡単な仕様から考えた方が良いです)