遍历一个可变的JSON数组
我正在研究一个Web应用程序,该Web应用程序使用Yahoo Query Language API从Web页面获取其数据以返回JSON数组。有时候我遇到了一个障碍,当页面上只有一个“比赛”时,数组设置不同,在某些情况下我无法遍历它。让我在一个例子中解释。遍历一个可变的JSON数组
阵列布局的页面与多发的比赛
Array (
[div] => array (
[0] => array (
['venue_id'] = 02222
['venue_name'] = 'Hove'
['race_id'] = 9222
)
[1] => array (
['venue_id'] = 03333
['venue_name'] = 'Romford'
['race_id'] = 2442
)
//...and so on
)
)
阵列布局的页面只有一个种族
Array (
[div] => array (
['venue_id'] = 02222
['venue_name'] = 'Hove'
['race_id'] = 9222
)
)
在应用方面,我目前使用简单foreach语句遍历数组。但是,这显然不适用于第二个例子,我需要一个解决方法。 foreach语句的
例
foreach($result['div'] as $race) {
echo 'Venue ID: '.$race['venue_id'];
echo 'Venue Name: '.$race['venue_name'];
echo 'Race ID: '.$race['race_id'];
}
任何帮助将大规模感激!
丹
我会做这个..
如果(isset($阵列[ '格'] [0])!) $阵列['div'] = array($ array ['div']);
这样我就不必有两种迭代方法。
什么:
if (isset($result['div'][0])){
//first iteration method
} else{
//second iteration method
}
在第二个例子中,由于$ result ['div']数组中有3个元素(venue_id,venue_name和race_id),计数函数是否不返回“3”? – 2011-02-27 10:29:06
对,我的坏,我改变了代码。 – mailo 2011-02-27 10:30:56
简单:
function format_race($race) {
echo 'Venue ID: '.$race['venue_id'];
echo 'Venue Name: '.$race['venue_name'];
echo 'Race ID: '.$race['race_id']
}
if (isset($result['div']['venue_id'])) {
format_race($result);
} else {
array_map('format_race', $result);
}
这也有外部功能,它可以在许多情况下都得心应手抽象数据操作的优势。
请注意,在这里我滥用一点array_map,可能使用foreach($ result作为$ race)会让您的程序更易于读取其他php程序员,如果您只需要打印。
查看所有YQL结果集返回的值count
。如果只有一个结果,那么强制它是一个数组(有一个项目),就像有多个结果一样。
所以,像...
if ($yql['query']['count'] == 1) {
$yql['results']['data'] = array($yql['results']['data']);
}
这样,你的脚本的其余部分并不需要关心结果的结构。
有趣的方法。 – mailo 2011-02-27 10:34:08
像梦一样工作。谢谢! – 2011-02-27 10:38:59