您好,欢迎访问一九零五行业门户网

100分PHP数组合并

我定义了一对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}]
其它类似信息

推荐信息