loc*_*ost 3 php parsing json feed
我在这个NFL Game Center JSON提要中检索"name","att","cmp"和"yds"时遇到了麻烦.使用PHP.
如何在不硬编码"2015091700"和"00-0023436"的情况下检索这些值?
http://www.nfl.com/liveupdate/game-center/2015091700/2015091700_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 Feed的内容?理想情况下,我想创建一个可以插入MySQL数据库表的查询字符串.
一种方法是使用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
现在,您可以根据需要使用播放器数据的各个部分,因为它们可以通过键轻松识别.
| 归档时间: | 
 | 
| 查看次数: | 147 次 | 
| 最近记录: |