teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

修正

2019/11/21 14:16

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  $mergeArray = [];
9
9
  $mergeArray['nameinfo']= $hogename[0];
10
- unset($mergeArray['nameinfo']['id']);
10
+ //unset($mergeArray['nameinfo']['id']);
11
11
  $mergeArray['iteminfo']= $itemlist[0]['iteminfo'];
12
12
 
13
13
 
@@ -35,7 +35,7 @@
35
35
  $list = [];
36
36
  foreach($hogename as $num=>$data){
37
37
  // if($itemlist[$num]['id'] === $data['id']){
38
- unset($data['id']);
38
+ //unset($data['id']);
39
39
  $list[] = [
40
40
  'nameinfo'=>$data,
41
41
  'iteminfo'=>$itemlist[$num]['iteminfo'],
@@ -50,4 +50,55 @@
50
50
 
51
51
  それによって対応方針が全く異なります。
52
52
  重複していたらどっちかを残すとかそもそも処理しないとか、それも仕様ですね。
53
- 仕様・設計に熟考が必要な要件です(そうでなく学習目的ならもっと簡単な仕様から考えた方が良いです)
53
+ 仕様・設計に熟考が必要な要件です(そうでなく学習目的ならもっと簡単な仕様から考えた方が良いです)
54
+
55
+ > nameinfoの方にはidが欲しいので
56
+
57
+ ならこっちにつけないと紐づけにならないと思いますし、
58
+ 今後のデータの扱いが結構面倒です。
59
+ ```php
60
+ array (
61
+ 1 => //キーにID
62
+ array (
63
+ 'nameinfo' =>
64
+ array (
65
+ 'name' => 'hogehoge',
66
+ 'gender' => '男性',
67
+ ),
68
+ 'iteminfo' =>
69
+ array (
70
+ 0 => '木の枝',
71
+ 1 => '皮の服',
72
+ 2 => '鉄の鎧',
73
+ ),
74
+ ),
75
+ 2 => //キーにID
76
+ array (
77
+ 'nameinfo' =>
78
+ array (
79
+ 'name' => 'hogehoge2',
80
+ 'gender' => '女性',
81
+ ),
82
+ 'iteminfo' =>
83
+ array (
84
+ 0 => '鉄の枝',
85
+ 1 => '鉄の服',
86
+ 2 => '鉄鉄の鎧',
87
+ ),
88
+ ),
89
+ 3 => //キーにID
90
+ array (
91
+ 'nameinfo' =>
92
+ array (
93
+ 'name' => 'hogehoge3',
94
+ 'gender' => '男性',
95
+ ),
96
+ 'iteminfo' =>
97
+ array (
98
+ 0 => '鋼の枝',
99
+ 1 => '鋼の服',
100
+ 2 => '鋼の鎧',
101
+ ),
102
+ ),
103
+ )
104
+ ```

1

修正

2019/11/21 14:16

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -16,4 +16,38 @@
16
16
 
17
17
  他にも要件があるのでしたら、
18
18
  前提や背景、仕様はきちんと提示しましょう。
19
- 赤の他人である回答者には質問に書いてあることが全てです。
19
+ 赤の他人である回答者には質問に書いてあることが全てです。
20
+
21
+ # 追記された配列を元に。
22
+
23
+ 効率的にコードを組もうとしたら、対象の情報の法則性を見つけることです。
24
+ 本当に提示された通りであれば、2つの配列は同じ順番でidが振られているということ。
25
+ でしたら、「idが同じだったら」は不要です。
26
+ ```php
27
+ $hogename[] = ['id'=>1,'name'=>'hogehoge','gender'=>'男性'];
28
+ $hogename[] = ['id'=>2,'name'=>'hogehoge2','gender'=>'女性'];
29
+ $hogename[] = ['id'=>3,'name'=>'hogehoge3','gender'=>'男性'];
30
+
31
+ $itemlist[] = ['id'=>1,'iteminfo' => ['木の枝','皮の服','鉄の鎧']];
32
+ $itemlist[] = ['id'=>2,'iteminfo' => ['鉄の枝','鉄の服','鉄鉄の鎧']];
33
+ $itemlist[] = ['id'=>3,'iteminfo' => ['鋼の枝','鋼の服','鋼の鎧']];
34
+
35
+ $list = [];
36
+ foreach($hogename as $num=>$data){
37
+ // if($itemlist[$num]['id'] === $data['id']){
38
+ unset($data['id']);
39
+ $list[] = [
40
+ 'nameinfo'=>$data,
41
+ 'iteminfo'=>$itemlist[$num]['iteminfo'],
42
+ ];
43
+ // }
44
+ }
45
+ var_dump($list);
46
+ ```
47
+
48
+ ずれている可能性があるかどうか分からなかったのでこのような形。
49
+ 配列がそれぞれ作られているので、IDを重複している配列もありえるかもしれません。
50
+
51
+ それによって対応方針が全く異なります。
52
+ 重複していたらどっちかを残すとかそもそも処理しないとか、それも仕様ですね。
53
+ 仕様・設計に熟考が必要な要件です(そうでなく学習目的ならもっと簡単な仕様から考えた方が良いです)