为了账号安全,请及时绑定邮箱和手机立即绑定

根据匹配值从两个数组创建新数组

根据匹配值从两个数组创建新数组

PHP
长风秋雁 2021-12-03 15:01:42
试图根据匹配值从两个对象数组创建一个新数组,但不知道如何实现这一点。        $dData = '[            {                "products": [                    {                        "Part ID" : "001",                        "name" : "Product Name",                        "category" : "Product Category",                        "description" : "Product Description",                        "id" : "111xyz",                    },                    {                        "Part ID" : "002",                        "name" : "Product Name 2",                        "category" : "Product Category 2",                        "description" : "Product Description 2",                        "id" : "333xyz"                    },                    {                        "Part ID" : "003",                        "name" : "Product Name 3",                        "category" : "Product Category 3",                        "description" : "Product Description 3",                        "id" : "444xyz"                    },                      {                        "Part ID" : "004",                        "name" : "Product Name 4",                        "category" : "Product Category",                        "description" : "Product Description",                        "id" : "666xyz",                        "features_img_id":["f1","f2","f3"]                    }]                },                {                "assets": [                    {                        "File Name" : "Some file name",                        "url" : "www.123.com/x.jpg",                        "id" : "111xyz"                    },                    {                         "File Name" : "Feature 1 file",                        "url" : "www.123.com/f1.jpg",                        "id" : "f1"                    },如果我在这里完全是新手,我深表歉意。不知道如何定位 'feature_img_id' 数组并将其与资产 ID 匹配并将其添加到 $processedProducts 中。请查看获得想法所需的结果。
查看完整描述

1 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

你可以这样做:


$dData = '[

            {

                "products": [

                    {

                        "Part ID" : "001",

                        "name" : "Product Name",

                        "category" : "Product Category",

                        "description" : "Product Description",

                        "id" : "111xyz"

                    },

                    {

                        "Part ID" : "002",

                        "name" : "Product Name 2",

                        "category" : "Product Category 2",

                        "description" : "Product Description 2",

                        "id" : "333xyz"

                    },

                    {

                        "Part ID" : "003",

                        "name" : "Product Name 3",

                        "category" : "Product Category 3",

                        "description" : "Product Description 3",

                        "id" : "444xyz"

                    },  

                    {

                        "Part ID" : "004",

                        "name" : "Product Name 4",

                        "category" : "Product Category",

                        "description" : "Product Description",

                        "id" : "666xyz",

                        "features_img_id":["f1","f2","f3"]

                    }]

                },

                {

                "assets": [

                    {

                        "File Name" : "Some file name",

                        "url" : "www.123.com/x.jpg",

                        "id" : "111xyz"

                    },

                    {

                         "File Name" : "Feature 1 file",

                        "url" : "www.123.com/f1.jpg",

                        "id" : "f1"

                    },

                    {

                         "File Name" : "Feature 2 file",

                        "url" : "www.123.com/f2.jpg",

                        "id" : "f2"

                    },

                    {

                         "File Name" : "Feature 2 file",

                        "url" : "www.123.com/f3.jpg",

                        "id" : "f3"

                    }]

            }

]';


$data = json_decode($dData, false);

$products = $data[0]->products;

$assets = $data[1]->assets;


$processedProducts = $products;

foreach($processedProducts as $key => $product) {

    foreach($assets as $asset) {

        if ($asset->id == $product->id) {

            $product->url = $asset->url;    

        }

        if (isset($product->features_img_id) && in_array($asset->id, $product->features_img_id)) {

            $product->feature_image_url[] = $asset->url;    

        }

    }

    unset($product->id);

    unset($product->features_img_id);

}

将导致以下结果数组:


Array

(

    [0] => stdClass Object

        (

            [Part ID] => 001

            [name] => Product Name

            [category] => Product Category

            [description] => Product Description

            [url] => www.123.com/x.jpg

        )


    [1] => stdClass Object

        (

            [Part ID] => 002

            [name] => Product Name 2

            [category] => Product Category 2

            [description] => Product Description 2

        )


    [2] => stdClass Object

        (

            [Part ID] => 003

            [name] => Product Name 3

            [category] => Product Category 3

            [description] => Product Description 3

        )


    [3] => stdClass Object

        (

            [Part ID] => 004

            [name] => Product Name 4

            [category] => Product Category

            [description] => Product Description

            [feature_image_url] => Array

                (

                    [0] => www.123.com/f1.jpg

                    [1] => www.123.com/f2.jpg

                    [2] => www.123.com/f3.jpg

                )


        )


)


查看完整回答
反对 回复 2021-12-03
  • 1 回答
  • 0 关注
  • 182 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信