我有这种阵列:
Array ( [data] => Array ( [0] => Array ( [name] => Lskdjlkdsfj [start_time] => 2013-06-12 [timezone] => Europe/Rome [location] => Rome, Lazio [id] => 592087844156650 [rsvp_status] => attending ) ) [paging] => Array ( [previous] => https://graph.facebook.com/100004042705860/events?limit=25&since=1370995200&__paging_token=592087844156650&__previous=1 [next] => https://graph.facebook.com/100004042705860/events?limit=25&until=1370995200&__paging_token=592087844156650 ) )
要获取我正在执行的数据:
foreach ($fb_events as $data) {
foreach ($data as $fb_event_data) {
echo $fb_event_data['name'];
echo $fb_event_data['start_time'];
}
}
使用双foreach这是最好的方法吗?有没有更好的方法循环到数组的数组? 这个是有效的。我只是想知道我是否以“正确”的方式做到了这一点!
答案 0 :(得分:3)
虽然使用嵌套循环没有任何问题。在某些情况下,您可能希望以更优雅的方式解决循环问题。看看PHP的RecursiveArrayIterator和RecursiveIteratorIterator类。
$foo = array(
'data' => array(
'name' => 'Lskdjlkdsfj',
'start_time' => '2013-06-12',
'paging' => array(
'previous' => 'some-url'
)
)
);
$it = new RecursiveIteratorIterator( new RecursiveArrayIterator($foo) );
foreach ($it as $key => $val) {
echo $key . ":" . $val . "\n";
}
name:Lskdjlkdsfj
start_time:2013-06-12
previous:some-url
答案 1 :(得分:1)
嵌套循环不比嵌套数组更“正确”或“错误”。也就是说,它完全取决于您的数据及其含义。
如果您最终得到五个级别的嵌套循环,您可能需要重新考虑代码的结构。但我不认为嵌套的一个级别是 ipso facto 一个问题。
答案 2 :(得分:1)
如果顶级数组只有一个元素,那么这可以简化为
foreach ($fb_events["data"] as $fb_event_data) {
echo $fb_event_data['name'];
echo $fb_event_data['start_time'];
}