使用PHP合并JSON数组值

时间:2018-07-09 09:55:17

标签: php arrays json

我有两个带有某些值的JSON数组。我需要使用PHP将这些值合并为一种格式。这是我需要的数组格式和输出格式:

数组1:

    {
    "data": {
        "1": {
            "id": 1, 
            "name": "red"
        },
    "25": {
        "id": 3, 
            "name": "green"
        }
        }
}

数组2:

    {
    "data": {
        "10": {
            "id": 14, 
            "name": "blue"
        },
    "22": {
        "id": 5, 
            "name": "white"
        }
        }
}

合并后的预期结果:

    {
    "data": {
        "1": {
            "id": 1, 
            "name": "red"
        },
    "25": {
        "id": 3, 
            "name": "green"
        }
        },
        "10": {
            "id": 14, 
            "name": "blue"
        },
    "22": {
        "id": 5, 
            "name": "white"
        }
}

谢谢。

2 个答案:

答案 0 :(得分:0)

尝试此代码

<?php
    $json1 = '{
            "data": {
                "1": {
                    "id": 1, 
                    "name": "red"
                },
                "25": {
                    "id": 3, 
                        "name": "green"
                    }
                }
            }';

    $json2 = '{
            "data": {
                "10": {
                    "id": 14, 
                    "name": "blue"
                },
                "22": {
                    "id": 5, 
                    "name": "white"
                }
            }
        }';

    // Decode json into array
    $jArray1 = json_decode($json1, true);
    $jArray2 = json_decode($json2, true);

    // Merging array
    $merge['data']  = $jArray1['data'] + $jArray2['data'];

    // Encoding array to json
    $mergedJson = json_encode($merge);

    print_r( $mergedJson );
?>

答案 1 :(得分:0)

$de_json = json_decode('{
"data": {
    "1": {
        "id": 1, 
        "name": "red"
    },
"25": {
    "id": 3, 
        "name": "green"
    }
    }}', True);

echo '<pre>';print_r($de_json);

您将获得此输出

Array
(
    [data] => Array
        (
            [1] => Array
                (
                    [id] => 1
                    [name] => red
                )

            [25] => Array
                (
                    [id] => 3
                    [name] => green
                )

        )

)

将其他两个json数组转换为php数组,然后 使用array_merge()来获取合并后的数组。