回答編集履歴

3

調整

2017/04/28 04:02

投稿

yambejp
yambejp

スコア114850

test CHANGED
@@ -93,3 +93,61 @@
93
93
 
94
94
 
95
95
  という流れでしょうか?
96
+
97
+
98
+
99
+ # debug版
100
+
101
+ ```PHP
102
+
103
+ $a2 = array(1,2);
104
+
105
+ $a3 = array("1 7","3 4","3 2","5 6","1 5","2 5","2 4","7 3");
106
+
107
+ $a4=[$a2,[]];p();
108
+
109
+ array_walk($a3,function($x) use(&$a4){
110
+
111
+ print $x."<br>\n";
112
+
113
+ $y=explode(" ",$x);
114
+
115
+ if(in_array($y[0],$a4[0])){
116
+
117
+ if(!in_array($y[1],$a4[0])) array_push($a4[0],(int) $y[1]);
118
+
119
+ p();
120
+
121
+ if(in_array($y[1],$a4[1])) array_splice($a4[1],array_search($y[1],$a4[1]),1);
122
+
123
+ p();
124
+
125
+ }else{
126
+
127
+ if(!in_array($y[0],$a4[1])) array_push($a4[1],(int) $y[0]);
128
+
129
+ if(!in_array($y[1],$a4[1])) array_push($a4[1],(int) $y[1]);
130
+
131
+ p();
132
+
133
+ if(in_array($y[1],$a4[0])) array_splice($a4[1],array_search($y[1],$a4[1]),1);
134
+
135
+ p();
136
+
137
+ }
138
+
139
+ });
140
+
141
+ print_R($a4);
142
+
143
+
144
+
145
+ function p(){
146
+
147
+ global $a4;
148
+
149
+ print json_encode($a4)."<br>\n";
150
+
151
+ }
152
+
153
+ ```

2

追記

2017/04/28 04:02

投稿

yambejp
yambejp

スコア114850

test CHANGED
@@ -65,3 +65,31 @@
65
65
  print_R($a4);
66
66
 
67
67
  ```
68
+
69
+
70
+
71
+ # 追記
72
+
73
+ なるほど、だいぶ読み違えていたようです
74
+
75
+ 初期値=>0:[1,2],1:NULL
76
+
77
+ "1 7"=>0:[1,2,7],1:NULL //先頭1が[1,2]に含まれるから
78
+
79
+ "3 4"=>0:[1,2,7],1:[3,4] //先頭3が[1,2,7]に含まれないから
80
+
81
+ "5 6"=>0:[1,2,7],1:[3,4,5,6] //先頭5が[1,2,7]に含まれないから
82
+
83
+ "1 5"=>0:[1,2,7,1,5],1:[3,4,5,6] //先頭1が[1,2,7]に含まれるから
84
+
85
+ ただし、0:および1:はユニークデータで、1:には0:のデータが含まれないとすると
86
+
87
+ 整理して=>0:[1,2,7,5],1:[3,4,6]
88
+
89
+ "2 4"=>0:[1,2,7,5,2,4],1:[3,6]
90
+
91
+ 整理して=>0:[1,2,7,5,4],1:[3,6]
92
+
93
+
94
+
95
+ という流れでしょうか?

1

sample

2017/04/28 03:31

投稿

yambejp
yambejp

スコア114850

test CHANGED
@@ -27,3 +27,41 @@
27
27
  でよいのでしょうか?
28
28
 
29
29
  データはソートしたほうがよいのでしょうか?
30
+
31
+
32
+
33
+ # sample
34
+
35
+
36
+
37
+ ```PHP
38
+
39
+ $a2 = array(1,2);
40
+
41
+ $a3 = array("1 7","3 4","5 6","1 5","2 4");
42
+
43
+ $a4=[];
44
+
45
+ array_walk($a3,function($x) use($a2,&$a4){
46
+
47
+ $y=explode(" ",$x);
48
+
49
+ if(count($a4)==0) $a4=[[],[]];
50
+
51
+ if(in_array($y[0],$a2)){
52
+
53
+ $a4[0]=array_unique(array_merge($a4[0],$y));
54
+
55
+ $a4[1]=array_diff($a4[1],$y);
56
+
57
+ }else{
58
+
59
+ $a4[1]=array_unique(array_merge($a4[1],$y));
60
+
61
+ }
62
+
63
+ });
64
+
65
+ print_R($a4);
66
+
67
+ ```