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

回答編集履歴

3

調整

2017/04/28 04:02

投稿

yambejp
yambejp

スコア117912

answer CHANGED
@@ -45,4 +45,33 @@
45
45
  "2 4"=>0:[1,2,7,5,2,4],1:[3,6]
46
46
  整理して=>0:[1,2,7,5,4],1:[3,6]
47
47
 
48
- という流れでしょうか?
48
+ という流れでしょうか?
49
+
50
+ # debug版
51
+ ```PHP
52
+ $a2 = array(1,2);
53
+ $a3 = array("1 7","3 4","3 2","5 6","1 5","2 5","2 4","7 3");
54
+ $a4=[$a2,[]];p();
55
+ array_walk($a3,function($x) use(&$a4){
56
+ print $x."<br>\n";
57
+ $y=explode(" ",$x);
58
+ if(in_array($y[0],$a4[0])){
59
+ if(!in_array($y[1],$a4[0])) array_push($a4[0],(int) $y[1]);
60
+ p();
61
+ if(in_array($y[1],$a4[1])) array_splice($a4[1],array_search($y[1],$a4[1]),1);
62
+ p();
63
+ }else{
64
+ if(!in_array($y[0],$a4[1])) array_push($a4[1],(int) $y[0]);
65
+ if(!in_array($y[1],$a4[1])) array_push($a4[1],(int) $y[1]);
66
+ p();
67
+ if(in_array($y[1],$a4[0])) array_splice($a4[1],array_search($y[1],$a4[1]),1);
68
+ p();
69
+ }
70
+ });
71
+ print_R($a4);
72
+
73
+ function p(){
74
+ global $a4;
75
+ print json_encode($a4)."<br>\n";
76
+ }
77
+ ```

2

追記

2017/04/28 04:02

投稿

yambejp
yambejp

スコア117912

answer CHANGED
@@ -31,4 +31,18 @@
31
31
  }
32
32
  });
33
33
  print_R($a4);
34
- ```
34
+ ```
35
+
36
+ # 追記
37
+ なるほど、だいぶ読み違えていたようです
38
+ 初期値=>0:[1,2],1:NULL
39
+ "1 7"=>0:[1,2,7],1:NULL //先頭1が[1,2]に含まれるから
40
+ "3 4"=>0:[1,2,7],1:[3,4] //先頭3が[1,2,7]に含まれないから
41
+ "5 6"=>0:[1,2,7],1:[3,4,5,6] //先頭5が[1,2,7]に含まれないから
42
+ "1 5"=>0:[1,2,7,1,5],1:[3,4,5,6] //先頭1が[1,2,7]に含まれるから
43
+ ただし、0:および1:はユニークデータで、1:には0:のデータが含まれないとすると
44
+ 整理して=>0:[1,2,7,5],1:[3,4,6]
45
+ "2 4"=>0:[1,2,7,5,2,4],1:[3,6]
46
+ 整理して=>0:[1,2,7,5,4],1:[3,6]
47
+
48
+ という流れでしょうか?

1

sample

2017/04/28 03:31

投稿

yambejp
yambejp

スコア117912

answer CHANGED
@@ -12,4 +12,23 @@
12
12
  "1 5"=>0:[1,7,5],1:[3,4,6]
13
13
  "2 4"=>0:[1,7,5,2,4],1:[3,6]
14
14
  でよいのでしょうか?
15
- データはソートしたほうがよいのでしょうか?
15
+ データはソートしたほうがよいのでしょうか?
16
+
17
+ # sample
18
+
19
+ ```PHP
20
+ $a2 = array(1,2);
21
+ $a3 = array("1 7","3 4","5 6","1 5","2 4");
22
+ $a4=[];
23
+ array_walk($a3,function($x) use($a2,&$a4){
24
+ $y=explode(" ",$x);
25
+ if(count($a4)==0) $a4=[[],[]];
26
+ if(in_array($y[0],$a2)){
27
+ $a4[0]=array_unique(array_merge($a4[0],$y));
28
+ $a4[1]=array_diff($a4[1],$y);
29
+ }else{
30
+ $a4[1]=array_unique(array_merge($a4[1],$y));
31
+ }
32
+ });
33
+ print_R($a4);
34
+ ```