PHP 读取 json 数据
PHP reading json data
我是 PHP 的新手,all.I 的网络编程正在尝试从 Steam API.
读取一些 json 数据
数据:http://pastebin.com/hVWyLrfZ
我设法找到了单个对象(我相信?)。
这是我的代码:
<?php
$url = 'https://api.steampowered.com/IEconDOTA2_570/GetHeroes/v0001/?key=X';
$JSON = file_get_contents($url);
$data = json_decode($JSON);
$heroes = reset(reset($data));
//var_dump($heroes);
$wat = reset($heroes);
$antimage = array_values($heroes)[0];
var_dump($antimage);
?>
我希望数据像这样排列在数组中:
id => name
我的意思是,数组键应该是 id,值应该是英雄名字。
此外,我将 heroes 变量设置为 reset(reset($data)
) 的地方似乎是做我想做的事情的糟糕方法,也许有更好的方法?
您可以使用 array_map()
函数将 id 和 names 提取到两个单独的数组中,然后使用 array_combine()
从先前提取的数组中创建一个键值对数组。
$url = 'https://api.steampowered.com/IEconDOTA2_570/GetHeroes/v0001/?key=X';
$JSON = file_get_contents($url);
$data = json_decode($JSON, true);
$ids = array_map(function($a) {
return $a['id'];
}, $data['result']['heroes']);
$names = array_map(function($a) {
return $a['name'];
}, $data['result']['heroes']);
$heroes = array_combine($ids, $names);
print_r($heroes);
一个更简单更明显的解决方案是简单地遍历它。从你的 pastebin 中,我看到你的数据被包裹在两级数组中,所以 ...
$myResult = [];
foreach ($data['result']['heroes'] as $nameId) {
$myResult[$nameId['id']] = $nameId['name'];
}
(无需执行任何 reset
调用;这是获取数组第一个元素的奇怪方法)
请注意,要使其生效,您必须应用@RamRaider 提供的技巧
$data = json_decode($JSON, true);
为了 json_decode
到 return 数组,而不是 StdClass。
我是 PHP 的新手,all.I 的网络编程正在尝试从 Steam API.
读取一些 json 数据数据:http://pastebin.com/hVWyLrfZ
我设法找到了单个对象(我相信?)。
这是我的代码:
<?php
$url = 'https://api.steampowered.com/IEconDOTA2_570/GetHeroes/v0001/?key=X';
$JSON = file_get_contents($url);
$data = json_decode($JSON);
$heroes = reset(reset($data));
//var_dump($heroes);
$wat = reset($heroes);
$antimage = array_values($heroes)[0];
var_dump($antimage);
?>
我希望数据像这样排列在数组中:
id => name
我的意思是,数组键应该是 id,值应该是英雄名字。
此外,我将 heroes 变量设置为 reset(reset($data)
) 的地方似乎是做我想做的事情的糟糕方法,也许有更好的方法?
您可以使用 array_map()
函数将 id 和 names 提取到两个单独的数组中,然后使用 array_combine()
从先前提取的数组中创建一个键值对数组。
$url = 'https://api.steampowered.com/IEconDOTA2_570/GetHeroes/v0001/?key=X';
$JSON = file_get_contents($url);
$data = json_decode($JSON, true);
$ids = array_map(function($a) {
return $a['id'];
}, $data['result']['heroes']);
$names = array_map(function($a) {
return $a['name'];
}, $data['result']['heroes']);
$heroes = array_combine($ids, $names);
print_r($heroes);
一个更简单更明显的解决方案是简单地遍历它。从你的 pastebin 中,我看到你的数据被包裹在两级数组中,所以 ...
$myResult = [];
foreach ($data['result']['heroes'] as $nameId) {
$myResult[$nameId['id']] = $nameId['name'];
}
(无需执行任何 reset
调用;这是获取数组第一个元素的奇怪方法)
请注意,要使其生效,您必须应用@RamRaider 提供的技巧
$data = json_decode($JSON, true);
为了 json_decode
到 return 数组,而不是 StdClass。