0

可以在 PHP 上加入两个不同列名称(id<->lid)上的两个 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}]

提前感谢您的帮助。

4

1 回答 1

0

这里的问题是您的 JSON 中将有同名的键。理论上,这个答案就是你要找的:答案

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

$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);

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

于 2013-03-13T23:44:57.960 回答