0

我目前正在搞乱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"],但没有返回任何内容。

我不知道出了什么问题;没有任何东西被退回。

4

3 回答 3

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"]

于 2013-05-28T22:03:18.033 回答
0

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

for($i = 0;$i<count($b["response"]["players"]);$i++)
{
   echo $b["response"]["players"][$i]["name"]
}
于 2013-05-28T22:05:04.320 回答
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'];
于 2013-05-28T22:05:51.243 回答