php – 解析JSON提要
发布时间:2020-12-13 21:54:43 所属栏目:PHP教程 来源:网络整理
导读:我在这个NFL Game Center JSON提要中检索“name”,“att”,“cmp”和“yds”时遇到了麻烦.使用 PHP. 如何在不硬编码“2015091700”和“00-0023436”的情况下检索这些值? http://www.nfl.com/liveupdate/game-center/2015091700/2015091700_gtd.json { "2015
我在这个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 Library的一部分.您可以像这样使用它:
<?php $data = '{ "2015091700":{ "home":{ "stats":{ "passing":{ "00-0023436":{ "name":"A.Smith","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 EXAMPLE 如果您希望将单个位变为变量,则最简单的方法是对代码进行少量更改: $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($json)); $player = array(); foreach($iterator as $key=>$value) { $player[$key] = $value; } echo $player['name']; 这允许您描述播放器并将键正确分配给播放器.以上结果将是: A.Smith 现在,您可以根据需要使用播放器数据的各个部分,因为它们可以通过键轻松识别. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |