如何在两个JSON对象上进行连接?

时间:2013-03-13 23:35:10

标签: php json

可以在两个不同的列名称(id< - > lid)上加入PHP两个JSON吗? JSON看起来像这样:


[{"id":504,"displayname":"Jack","idname":"Work"},{"id":505,"displayname":"Peter","idname":"Home"}]
[{"id":12,"role_id":1800,"prv":2,"lid":504},{"id":20,"role_id":1800,"prv":2,"lid":505}]

输出应该像这样说:


[{"id":504,"displayname":"Jack","idname":"Work","id":12,"role_id":1800,"prv":2,"lid":504},{"id":505,"displayname":"Peter","idname":"Home","id":20,"role_id":1800,"prv":2,"lid":505}]

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这里的问题是你的JSON中会有相同名称的密钥。从理论上讲,这个答案正是您所寻找的:answer

但是,如果您需要自定义合并算法,则以下方法有效:

$json1 = json_decode($json1String, true);
$json2 = json_decode($json2String, true);

$mergedJson = array();

foreach($json1 as $values)
{
    foreach($json2 as $values2)
    {
        if($values['id'] == $values2['lid'])
        {
            $mergedJson[] = array_merge_recursive($values, $values2);
            break;
        }
    }
}

$finalJsonString = json_encode($mergedJson);

这是非常基本的。我正在使用数组合并递归函数,但您不需要使用它。您很可能需要更多代码来手动合并阵列。但这应该是一个很好的起点。