1

我有这种数组:

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 的最佳方法吗?有没有更好的方法来循环进入数组的数组?这个正在工作。我只是想知道我是否以“正确”的方式做事!

4

3 回答 3

3

虽然使用嵌套循环没有任何问题。在某些情况下,您可能希望以更优雅的方式解决循环问题。看看 PHP 的RecursiveArrayIteratorRecursiveIteratorIterator类。

$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
于 2013-06-12T17:17:27.343 回答
1

嵌套循环并不比嵌套数组更“正确”或“错误”。也就是说,这完全取决于您的数据及其含义。

如果您最终得到五级嵌套循环,您可能需要重新考虑代码的结构。但我不认为一级嵌套是事实上的问题。

于 2013-06-12T17:07:06.547 回答
1

如果顶层数组只有一个元素,那么这可以简化为

foreach ($fb_events["data"]  as $fb_event_data) {
    echo $fb_event_data['name'];
    echo $fb_event_data['start_time'];
}
于 2013-06-12T17:09:08.003 回答