簡體   English   中英

PHP 數組到多維 json 數據

[英]PHP Array to multidimensional json data

我有以下 php 代碼,可生成 json 數據集

$json_data = array(
    "code"=>"200",
    "name"=>"My Name",
    "serial_number"=>"serial"
);

$result =  json_encode($json_data);

數據集只有一層。 當我使用 php 循環創建此數據集時。 我希望能夠有多個人,但代碼元素在用戶之外。 所以基本上我希望 json 數據看起來像這樣:

{
    "code": "404",
    "people": [
        {
            "name": "Person 1",
            "serial_number": "xyz"
        },
        {
            "name": "Person Two",
            "serial_number": "123"
        }
    ]
}

基本上,您想按屬性“代碼”對對象數組進行分組。 對此有很多疑問。 這是使用array_reduce的可能方法之一。


$json_data = [
    [
        "code" => "200",
        "name" => "My Name1",
        "serial_number" => "serial1",
    ], [
        "code" => "200",
        "name" => "My Name2",
        "serial_number" => "serial2",
    ], [
        "code" => "400",
        "name" => "My Name3",
        "serial_number" => "serial3",
    ],
];

$result = array_values(array_reduce($json_data, function ($agg, $item) {
    if (!isset($agg[$item['code']])) {
        $agg[$item['code']] = [
            "code" => $item['code'],
            "people" => [],
        ];
    }
    $agg[$item['code']]['people'][] = [
        "name" => $item["name"],
        "serial_number" => $item["serial_number"],
    ];
    return $agg;
}, []));

print_r($result);

Output:

Array
(
    [0] => Array
        (
            [code] => 200
            [people] => Array
                (
                    [0] => Array
                        (
                            [name] => My Name1
                            [serial_number] => serial1
                        )

                    [1] => Array
                        (
                            [name] => My Name2
                            [serial_number] => serial2
                        )

                )

        )

    [1] => Array
        (
            [code] => 400
            [people] => Array
                (
                    [0] => Array
                        (
                            [name] => My Name3
                            [serial_number] => serial3
                        )

                )

        )

)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM