javascript - 使用 PHP 获取 JSON 中的特定值

标签 javascript php html json

我有一个如下所示的 JSON 文件...

{
"success": true,
"num_items": 6104,
"items": [
    {
        "market_name": "\u2605 Bayonet",
        "market_hash_name": "\u2605 Bayonet",
        "icon_url": "\/\/steamcommunity-a.akamaihd.net\/economy\/image\/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXU5A1PIYQh5hlcX0nvUOGsx8DdQBJjIAVHubSaKQZ53P3NZXMXvYmykdLSxqWkZ7-HkjMIvpIj3u2Y84733gzh_RU_MG_zIYLEdQ45fxiOrdJh0ExF",
        "name_color": "8650AC",
        "quality_color": "EB4B4B"
    },
    {
        "market_name": "\u2605 Bayonet | Blue Steel (Battle-Scarred)",
        "market_hash_name": "\u2605 Bayonet | Blue Steel (Battle-Scarred)",
        "icon_url": "\/\/steamcommunity-a.akamaihd.net\/economy\/image\/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpotLu8JAllx8zJYAJA4MmzkL-DkvbiKvXTkzNVucNzj7mX9tWk21Xkr0JvN231JYGcdA47NF3Y81Hoxebs1sftot2XnmcyW1u0",
        "name_color": "8650AC",
        "quality_color": "EB4B4B"
    },
    // etc ...
]

我有一堆所谓的元素,我想通过仅知道market_hash_name来获得quality_color。我如何使用 PHP 来做到这一点?

最佳答案

您需要执行以下操作:

  1. 解码您的 JSON 文件 json_decode 。这将允许您在关联数组中访问您的 JSON。
  2. 使用 for 循环或 foreach 循环遍历“items”数组中的每个数组,将 market_hash_name 与用户的(?)输入进行比较,然后获取该数组的quality_color 值。

编辑:您对答案做了很好的尝试,所以这是我对您的问题的有效解决方案。从您向我展示的一小段代码来看,问题在于您没有将 json_decode 设为关联数组,而是将其视为一个数组来调用。而不是 json_decode($JSONString) 它应该是 json_decode($JSONString, true)

<?php

 $JSONin = '{
  "success": true,
  "num_items": 6104,
  "items": [
    {
      "market_name": "★ Bayonet",
      "market_hash_name": "★ Bayonet",
      "icon_url": "//steamcommunity-a.akamaihd.net/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXU5A1PIYQh5hlcX0nvUOGsx8DdQBJjIAVHubSaKQZ53P3NZXMXvYmykdLSxqWkZ7-HkjMIvpIj3u2Y84733gzh_RU_MG_zIYLEdQ45fxiOrdJh0ExF",
      "name_color": "8650AC",
      "quality_color": "EB4B4B"
    },
    {
      "market_name": "★ Bayonet | Blue Steel (Battle-Scarred)",
      "market_hash_name": "★ Bayonet | Blue Steel (Battle-Scarred)",
      "icon_url": "//steamcommunity-a.akamaihd.net/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpotLu8JAllx8zJYAJA4MmzkL-DkvbiKvXTkzNVucNzj7mX9tWk21Xkr0JvN231JYGcdA47NF3Y81Hoxebs1sftot2XnmcyW1u0",
      "name_color": "8650AC",
      "quality_color": "EB4B4B"
    }
  ]
}';

 $JSON = json_decode($JSONin, true);

 $searched_market_hash_name = "★ Bayonet | Blue Steel (Battle-Scarred)";

 foreach ($JSON['items'] as $item)
     {
     if ($searched_market_hash_name == $item['market_hash_name'])
         {
         echo "found! quality color is " . $item['quality_color'];
         }
     }

关于javascript - 使用 PHP 获取 JSON 中的特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44640480/

相关文章:

javascript - 如何从jquery标记选中的所有复选框

html - Foundation 6 - 在单个顶部栏中有多个堆叠断点

javascript - 如何从中心(或其他有效的替代方法)扩展选择器宽度?

javascript - 如果有人使用 jquery 选择美国,则需要更多输入

javascript - 无法读取未定义错误的属性 'getTime'

PHP 如何使用 laravel 5 将数据从数组保存到 mysql

PHP Oist 从一个下拉菜单中将两个变量放入 Mysql

php - 在html表格的每一行添加编辑按钮,以编辑数据库

javascript - 正则表达式,用于匹配包含一个单词但不包含另一个单词的URL

php - 使用 iframe 获取 $_SERVER ['HTTP_X_REQUESTED_WITH' ]