PHP 转换:JSON 到关联数组

问题描述 投票:0回答:1

例如我有一组json格式的数据-

{
    "data": [
        {
            "attributes": {
                "product_listing_id": "1",
                "master_categories": [
                    {
                        "master_category_id": 2165
                    }
                ]
            },
            "dirty": [],
            "meta": [],
            "client": {}
        },
        {
            "attributes": {
                "product_listing_id": "2",
                "master_categories": [
                    {
                        "master_category_id": 2165
                    },
                    {
                        "master_category_id": 2166
                    },
                    {
                        "master_category_id": 2172
                    }
                ]
            },
            "dirty": [],
            "meta": [],
            "client": {}
        }
    ]
}

我怎样才能将它转换成一个关联数组,它将“product_listing_id”字段作为键,“master_categories”作为它的值,为每个产品 ID 内爆 master_category_id。 喜欢

[1] => 2165,
[2] => 2165|2166|2172

非常感谢。 R

php arrays json multidimensional-array
1个回答
0
投票

您可以使用以下代码将给定的 JSON 转换为所需的关联数组:

$json = '{
    "data": [
        {
            "attributes": {
                "product_listing_id": "1",
                "master_categories": [
                    {
                        "master_category_id": 2165
                    }
                ]
            },
            "dirty": [],
            "meta": [],
            "client": {}
        },
        {
            "attributes": {
                "product_listing_id": "2",
                "master_categories": [
                    {
                        "master_category_id": 2165
                    },
                    {
                        "master_category_id": 2166
                    },
                    {
                        "master_category_id": 2172
                    }
                ]
            },
            "dirty": [],
            "meta": [],
            "client": {}
        }
    ]
}';

$data = json_decode($json, true);

$assocArray = array();
foreach($data['data'] as $datum) {
    $id = $datum['attributes']['product_listing_id'];
    $categories = array_column($datum['attributes']['master_categories'], 'master_category_id');
    $assocArray[$id] = implode('|', $categories);
}

print_r($assocArray);

输出:

Array
(
    [1] => 2165
    [2] => 2165|2166|2172
)

此代码使用 json_decode() 函数将给定的 JSON 字符串转换为 PHP 关联数组。然后,它遍历每个数据对象并使用数组索引和 array_column() 函数提取 product_listing_id 和 master_category_id 值。最后,它使用 implode() 函数将 master_category_id 值连接成一个由 | 分隔的字符串。字符并将结果存储在以 product_listing_id 为键的关联数组中。

© www.soinside.com 2019 - 2024. All rights reserved.