我定義了一對json資料 索引值對的方式 K 代表Key V代表Values
values帶有\r\n(分行符號)
也就是說我想將兩個PHP數組進行合并,將K和Value完全相同就忽略一個,如果K相同,V不同,就將V進行合并,值的合并方式也是,同slpit得到數組,然後取一個交集
[
{'K':'k111111','V':'v11111\r\nV11112\r\nV11113'},
{'K':'k22222','V':'v22222'},
{'K':'k33333,'V':'v33333'},
{'K':'k44444','V':'v44443\r\nv44444'}
]
PHP json_decode 函數之後得到數組
第二個json
[
{'K':'k111111','V':'v11111'},
{'K':'k33333,'V':'v33333'},
{'K':'k44444','V':'v44444\r\nv44445\r\nv44446'},
{'K':'k55555','V':'v55555'}
]
得到的結果:
[
{'K':'k111111','V':'v11111\r\nV11112\r\nV11113'},
{'K':'k22222','V':'v22222'},
{'K':'k33333,'V':'v33333'},
{'K':'k44444','V':'v44443\r\nv44444\r\nv44445\r\nv44446'},
{'K':'k55555','V':'v55555'}
]
也就是說K
請問 各位大神們,如何?
回複討論(解決方案)
錯了 不取交集,取數量多的那個
沒人 來人啊 大神們啊
$a =<<< 'JSON'[{'K':'k111111','V':'v11111\r\nV11112\r\nV11113'},{'K':'k22222','V':'v22222'},{'K':'k33333','V':'v33333'},{'K':'k44444','V':'v44443\r\nv44444'}]JSON;$a = str_replace("'", '"', $a);$a = json_decode($a, 1);$b =<<< 'JSON'[{'K':'k111111','V':'v11111'},{'K':'k33333','V':'v33333'},{'K':'k44444','V':'v44444\r\nv44445\r\nv44446'},{'K':'k55555','V':'v55555'}]JSON;$b = str_replace("'", '"', $b);$b = json_decode($b, 1);$res = array();foreach($a as $r) $res[$r['K']] = $r;foreach($b as $r) { $k = $r['K']; if(! isset($res[$k])) { $res[$k] = $r; continue; } if($res[$k]['V'] == $r['V']) continue; $res[$k]['V'] = join("\r\n", array_unique(array_merge(explode("\r\n", $res[$k]['V']), explode("\r\n", $r['V']))));}echo json_encode(array_values($res));
[{"K":"k111111","V":"v11111\r\nV11112\r\nV11113"},{"K":"k22222","V":"v22222"},{"K":"k33333","V":"v33333"},{"K":"k44444","V":"v44443\r\nv44444\r\nv44445\r\nv44446"},{"K":"k55555","V":"v55555"}]