在这个NFL游戏中心JSON提要中,我很难检索到"name“、"att”、"cmp“和"yds”。使用PHP。
如果没有硬编码"2015091700“和"00-0023436”,我如何检索这些值?
gtd.json
{
"2015091700":{
"home":{
"stats":{
"passing":{
"00-0023436":{
"name":"A.Smith",
"att":25,
"cmp":16,
"yds":191
}
}
}
}
}
}这是我现在的密码。
$url = file_get_contents("http://www.nfl.com/liveupdate/game-center/2015091700/2015091700_gtd.json");
$json = json_decode($url, true); // 'true' makes data an array
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($json));
$player = array();
foreach($iterator as $key=>$value) {
$player[$key] = $value;
echo $player['name'];
}这已经接近我需要的了。然而,这一页的内容如下:
A.Smith
A.Smith
A.Smith
A.Smith
A.Smith
A.Smith
A.Smith
A.Smith
J.Charles
J.Charles
J.Charles
J.Charles
J.Charles
J.Charles
J.Charles
J.Charles
A.Smith
A.Smith
A.Smith
A.Smith
A.Smith我不知道为什么我会得到重复的值。如何使它反映JSON提要的内容?理想情况下,我希望创建一个查询字符串,可以插入到我的MySQL数据库表中。
发布于 2015-09-22 19:26:55
一种方法是使用PHP的RecursiveIteratorIterator类,它允许您遍历任何其他迭代器类,以及允许通过数组进行简单迭代的RecursiveArrayIterator类。这些都是PHP的SPL库的一部分。你可以这样使用它:
<?php
$data = '{
"2015091700":{
"home":{
"stats":{
"passing":{
"00-0023436":{
"name":"A.Smith",
"att":25,
"cmp":16,
"yds":191
}
}
}
}
}
}';
$json = json_decode($data, true); // 'true' makes data an array
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($json));
foreach($iterator as $key=>$value) {
echo $key .' '. $value . '<br />';
}
?>结果是:
name A.Smith
att 25
cmp 16
yds 191示例
如果您希望将单个位放入变量中,这是对代码进行小更改的最简单方法:
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($json));
$player = array();
foreach($iterator as $key=>$value) {
$player[$key] = $value;
}
echo $player['name'];这使您可以描述一个球员和分配正确的键给播放器。上述结果将是:
A.Smith现在,您可以根据需要使用玩家数据的各个部分,因为它们很容易被他们的键识别。
发布于 2015-09-22 19:08:39
将JSON解码为一个关联数组,然后用foreach循环它。
$data = json_decode($json, true);
foreach($data as $key=>$val){
// $key = 2015091700
// $val = an associative array with one row.
// ['home' => ... ]
}发布于 2015-09-22 19:05:30
这个有用吗?
$decoded = json_decode($json,true);
var_dump($decoded['2015091700']);https://stackoverflow.com/questions/32724839
复制相似问题