首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从PHP中的JSON数组中获取公共值?

如何从PHP中的JSON数组中获取公共值?
EN

Stack Overflow用户
提问于 2018-12-20 14:03:46
回答 1查看 193关注 0票数 0

实际上,我试图通过php从JSON获取公共值

我们有两个数组

代码语言:javascript
复制
$array1 = 
[
    {
        "flower_id": "1",
        "flower_price": "1",
        "flower_name": "Nelumbo"
    },
    {
        "flower_id": "2",
        "flower_price": "2",
        "flower_name": "Water"
    },
    {
        "flower_id": "3",
        "flower_price": "2",
        "flower_name": "Ladys"
    },
    {
        "flower_id": "4",
        "flower_price": "2",
        "flower_name": "Foxtail"
    },
    {
        "flower_id": "5",
        "flower_price": "2",
        "flower_name": "White"
    },
    {
        "flower_id": "6",
        "flower_price": "2",
        "flower_name": "Marigold"
    },
    {
        "flower_id": "7",
        "flower_price": "2",
        "flower_name": "Lotus"
    },
    {
        "flower_id": "8",
        "flower_price": "2",
        "flower_name": "Rhododendron"
    },
    {
        "flower_id": "9",
        "flower_price": "2",
        "flower_name": "Common"
    }]

下面是数组调用$array1,与此数组比较的另一个数组是

代码语言:javascript
复制
$array2 =
[
    {
        "flower_id": "1",
        "flower_name": "Nelumbo"
    },
    {
        "flower_id": "3",
        "flower_name": "Ladys Slipper"
    },
    {
        "flower_id": "5",
        "flower_name": "White Orchid-tree"
    },
    {
        "flower_id": "9",
        "flower_name": "Common Rhododendron"
    }
]

但是我们需要与这两个数组交互,我希望得到这样的结果

代码语言:javascript
复制
[
{
    "flower_id": "1",
    "flower_name": "Nelumbo",
    "flower_price": "1"
},
{
    "flower_id": "3",
    "flower_name": "Ladys Slipper",
    "flower_price": "2"
},
{
    "flower_id": "5",
    "flower_name": "White Orchid-tree",
    "flower_price": "2"
},
{
    "flower_id": "9",
    "flower_name": "Common Rhododendron",
    "flower_price": "2"
}

]

如何从这两个数组获得这个结果?我尝试过这样做,但它只显示了公共值,但我需要flower_price来

代码语言:javascript
复制
        $new_array = array_diff_key($array1,$array2);
        echo json_encode($supplierArray);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-20 14:16:24

如果您想要找到公共项,一种快速的方法是通过flower_id (使用array_column())索引两个数组,然后执行一个array_intersect_key()来保存公共项,因为$array1是第一个数组,它将保留该数组中的所有细节。因为这会给您留下一个带键的数组,所以使用array_values()只提取内容.

代码语言:javascript
复制
$a1 = array_column($array1,null,"flower_id");
$a2 = array_column($array2,null,"flower_id");
echo json_encode(array_values(array_intersect_key($a1, $a2)));

用你的测试数据它会给出..。

代码语言:javascript
复制
[
    {
        "flower_id": "1",
        "flower_price": "1",
        "flower_name": "Nelumbo"
    },
    {
        "flower_id": "3",
        "flower_price": "2",
        "flower_name": "Ladys"
    },
    {
        "flower_id": "5",
        "flower_price": "2",
        "flower_name": "White"
    },
    {
        "flower_id": "9",
        "flower_price": "2",
        "flower_name": "Common"
    }
]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53870218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档