RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1057912
Accepted
JoelKamp
JoelKamp
Asked:2020-12-13 02:02:37 +0000 UTC2020-12-13 02:02:37 +0000 UTC 2020-12-13 02:02:37 +0000 UTC

如何按值连接这些 JSON?

  • 772

有这样的items.json:

[
  {
    "name": "Fluted Guard of the Moon Rider",
    "icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KW1Zwwo4NUX4oFJZEHLbXK9QlSPcU_oAlcQk2fVOiSxMfcRlFwIBYYpbaaOA9vxv_MdC8M7tq0xoaOzvb2Z7iJxD8GsJIi0--Up9Sh0A2yr0pvZ22iJdXGdVQ5NUaQpAZGHIGG2g"
  },
  {
    "name": "Lion Quiver of the Moon Rider",
    "icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KW1Zwwo4NUX4oFJZEHLbXK9QlSPcU_oAlcQk2fVOiSxtraRVhmahdbiauwIhFlwb2aImoS7oWwzIPYwqetYeKExm9SsMAg3b7AoNz32QDkqUNtMD2lJdPGbEZgNjYx8IO6"
  },
  {
    "name": "Bow of the Moon Rider",
    "icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KW1Zwwo4NUX4oFJZEHLbXK9QlSPcU_oAlcQk2fVOiS1cDEHE54GgZYofT2e1cwgKWRc2pB74SyzNbYwfamZL6BwjgF65wn3eyRp96sjVbg_xFofSmtc2nZXSY6"
  }
]

这是 price.json:

{
    "data": [
        {
          "updated_at": 1576048969000,
          "prices": {
            "last": 5300
          },
          "name": "Lion Quiver of the Moon Rider"
        },
        {
          "updated_at": 1576048969000,
          "prices": {
            "last": 2000.12
          },
          "name": "Dragon Sheild"
        }
    ]
}

如何按商品名称匹配 price.json 中的价格?让它看起来像这样:

{
    "name": "Lion Quiver of the Moon Rider",
    "icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KW1Zwwo4NUX4oFJZEHLbXK9QlSPcU_oAlcQk2fVOiSxtraRVhmahdbiauwIhFlwb2aImoS7oWwzIPYwqetYeKExm9SsMAg3b7AoNz32QDkqUNtMD2lJdPGbEZgNjYx8IO6",
   "price":5300
  }

我试图这样做,但结果是删除了重复的项目并且没有价格:

<?php

$jsonProducts = '[
  {
    "name": "Fluted Guard of the Moon Rider",
    "icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KW1Zwwo4NUX4oFJZEHLbXK9QlSPcU_oAlcQk2fVOiSxMfcRlFwIBYYpbaaOA9vxv_MdC8M7tq0xoaOzvb2Z7iJxD8GsJIi0--Up9Sh0A2yr0pvZ22iJdXGdVQ5NUaQpAZGHIGG2g"
  },
  {
    "name": "Lion Quiver of the Moon Rider",
    "icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KW1Zwwo4NUX4oFJZEHLbXK9QlSPcU_oAlcQk2fVOiSxtraRVhmahdbiauwIhFlwb2aImoS7oWwzIPYwqetYeKExm9SsMAg3b7AoNz32QDkqUNtMD2lJdPGbEZgNjYx8IO6"
  },
  {
    "name": "Lion Quiver of the Moon Rider",
    "icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KW1Zwwo4NUX4oFJZEHLbXK9QlSPcU_oAlcQk2fVOiSxtraRVhmahdbiauwIhFlwb2aImoS7oWwzIPYwqetYeKExm9SsMAg3b7AoNz32QDkqUNtMD2lJdPGbEZgNjYx8IO6"
  }
  ]';

$jsonData = '{
    "data": [
        {
          "updated_at": 1576048969000,
          "prices": {
            "last": 5300
          },
          "name": "Lion Quiver of the Moon Rider"
        },
        {
          "updated_at": 1576048969000,
          "prices": {
            "last": 2000.12
          },
          "name": "T-shirts"
        }
    ]
}';

$data = json_decode($jsonData, true)['data'];

$products = array_column(json_decode($jsonProducts, true), null, 'name');

$result = array_map(function($item) use ($products) {
    $product              = new \stdClass();
    $product->market_name = $products[$item['name']]['name'];
    $product->size        = $products[$item['name']]['size'];
    $product->price       = $item['prices']['last'] ?? null;
    return $product;
}, $data);

$resultJson = json_encode($result);

var_dump($resultJson);
php
  • 2 2 个回答
  • 10 Views

2 个回答

  • Voted
  1. Best Answer
    user285292
    2020-12-13T03:48:29Z2020-12-13T03:48:29Z

    如果我理解正确,你可以这样做:

    $price = json_decode($jsonData, 1)['data'];
    $json = json_decode($jsonProducts, 1);
    
    foreach($price as $key => $value)
    {
        foreach($json as $k => $value2) {
            if ($value['name'] === $value2['name']) {
                $json[$k]['price'] = $value['prices']['last'];
            }
        }
    }
    
    print_r($json);
    

    https://3v4l.org/mWaIS

    如果您只想对price找到的第一个匹配项(如果我们考虑重复)执行此操作,则可以执行以下操作:

    $bool = false;
    foreach($price as $key => $value)
    {
        foreach($json as $k => $value2) {
            if ($value['name'] === $value2['name']) {
                if ($bool !== true) {
                    $json[$k]['price'] = $value['prices']['last'];
                    $bool = true;
                }
            }
        }
    }
    

    https://3v4l.org/X7FoM

    • 3
  2. Bloom
    2020-12-13T04:08:26Z2020-12-13T04:08:26Z
    <?php
    $main='{"data1":[
      {
        "name": "Fluted Guard of the Moon Rider",
        "icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KW1Zwwo4NUX4oFJZEHLbXK9QlSPcU_oAlcQk2fVOiSxMfcRlFwIBYYpbaaOA9vxv_MdC8M7tq0xoaOzvb2Z7iJxD8GsJIi0--Up9Sh0A2yr0pvZ22iJdXGdVQ5NUaQpAZGHIGG2g"
      },
      {
        "name": "Lion Quiver of the Moon Rider",
        "icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KW1Zwwo4NUX4oFJZEHLbXK9QlSPcU_oAlcQk2fVOiSxtraRVhmahdbiauwIhFlwb2aImoS7oWwzIPYwqetYeKExm9SsMAg3b7AoNz32QDkqUNtMD2lJdPGbEZgNjYx8IO6"
      },
      {
        "name": "Bow of the Moon Rider",
        "icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KW1Zwwo4NUX4oFJZEHLbXK9QlSPcU_oAlcQk2fVOiS1cDEHE54GgZYofT2e1cwgKWRc2pB74SyzNbYwfamZL6BwjgF65wn3eyRp96sjVbg_xFofSmtc2nZXSY6"
      }
    ]
    }';
    
     $go='{
        "data": [
            {
              "updated_at": 1576048969000,
              "prices": {
                "last": 5300
              },
              "name": "Lion Quiver of the Moon Rider"
            },
            {
              "updated_at": 1576048969000,
              "prices": {
                "last": 2000.12
              },
              "name": "Dragon Sheild"
            }
        ]
    }';
    
    $result=json_decode($main,true);
    //print_r($result);
    $result1=json_decode($go,true);
    foreach ($result as $key => $value) {
    foreach ($value as $key1 => $value1) {
    
        foreach ($result1 as $key0 => $value0) {
    foreach ($value0 as $key10 => $value10) {
    
    if($value1['name']==$value10['name']){
    
        $arr['price']=$value10['prices']['last'];
        $arr['icon']=$value1['icon'];
        $arr['name']=$value1['name'];
    }
    
    }
    }
    
    }
    }
    
    print_r($arr);
    
    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    根据浏览器窗口的大小调整背景图案的大小

    • 2 个回答
  • Marko Smith

    理解for循环的执行逻辑

    • 1 个回答
  • Marko Smith

    复制动态数组时出错(C++)

    • 1 个回答
  • Marko Smith

    Or and If,elif,else 构造[重复]

    • 1 个回答
  • Marko Smith

    如何构建支持 x64 的 APK

    • 1 个回答
  • Marko Smith

    如何使按钮的输入宽度?

    • 2 个回答
  • Marko Smith

    如何显示对象变量的名称?

    • 3 个回答
  • Marko Smith

    如何循环一个函数?

    • 1 个回答
  • Marko Smith

    LOWORD 宏有什么作用?

    • 2 个回答
  • Marko Smith

    从字符串的开头删除直到并包括一个字符

    • 2 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5