显示从JSON文件获取的数组部分时出现问题

时间:2013-05-28 21:59:22

标签: php arrays json api steam

我目前正在搞乱JSON。我需要变量:$ a和$ b。

$ a从网站检索JSON文件:

    $a = file_get_contents("http://backpack.tf/api/IGetUsers/v2/?steamids=76561198037411448&format=json");

$ b对其进行解码

    $b = json_decode($a, true);

我在$ b上做了var_dump以确认它实际上是一个数组。

我试图回显$ b [“name”],但没有返回任何内容。

我不知道出了什么问题;没有任何回报。

3 个答案:

答案 0 :(得分:2)

你有一个多维数据集,而不是 $ b [“name”] 你想要的是:

$b["response"]["players"][0]["name"]

这是该URL的json对象结构

{
    "response": {
        "success": 1,
        "current_time": 1369778504,
        "players": {
            "0": {
                "steamid": "76561198037411448",
                "success": 1,
                "backpack_value": 185.86,
                "backpack_update": 1369543543,
                "name": "Paranoid Android",
                "stats_tf_reputation": 1,
                "notifications": 0
            }
        }
    }
}

如果你需要迭代,则必须循环通过 $ b [“response”] [“players”]

答案 1 :(得分:0)

也许你想要这样的东西?我只是猜测可能有超过1名玩家。

for($i = 0;$i<count($b["response"]["players"]);$i++)
{
   echo $b["response"]["players"][$i]["name"]
}

答案 2 :(得分:0)

嗯,这是返回的JSON:

{
    "response": {
        "success": 1,
        "current_time": 1369778435,
        "players": {
            "0": {
                "steamid": "76561198037411448",
                "success": 1,
                "backpack_value": 185.86,
                "backpack_update": 1369543543,
                "name": "Paranoid Android",
                "stats_tf_reputation": 1,
                "notifications": 0
            }
        }
    }
}

如果$b = json_decode($a),那么仅使用$b['name']将无效。该密钥未设置。

您必须遵循对象文字的嵌套。这样的事情应该有效:

echo $b['response']['players']['0']['name'];