在PHP中迭代嵌套数组

时间:2016-02-22 22:14:44

标签: php arrays json

我正在使用Twitter Rest API收集有关热门话题的信息。 API返回JSON,我试图解析数据。

这是我的相关代码(我不包括我的钥匙等等):

$twitter = new TwitterAPIExchange($settings); 
$string = json_decode($twitter->setGetfield($getfield)
     ->buildOauth($url, $requestMethod)
     ->performRequest(), true);

if($string["errors"][0]["message"] != "") 
    {echo "<h3>Sorry, there was a problem.</h3><p>Twitter returned the following error message:</p><p><em>"
    .$string[errors][0]["message"]."</em></p>";exit();}     

foreach($string as $items)
    {
        echo "Name: ". $items['name']."<br />";
        echo "Volume: ". $items['tweet_volume']."<br /><hr />";
    }

它返回的是一个看起来像这样的嵌套数组:

Array
(
[0] => Array
    (
        [trends] => Array
        (
            [0] => Array
                (
                    [name] => #NationalMargaritaDay
                    [url] => http://twitter.com/search?q=%23NationalMargaritaDay
                    [promoted_content] => 
                    [query] => %23NationalMargaritaDay
                    [tweet_volume] => 49400
                )
            [1] => Array
                (
                    [name] => #WORKvideo
                    [url] => http://twitter.com/search?q=%23WORKvideo
                    [promoted_content] => 
                    [query] => %23WORKvideo
                    [tweet_volume] => 103959
                )

......依此类推(我不会列出整个数组)。

我需要做的是能够遍历[trends]数组而不是父数组。我怎样才能修改我的foreach循环来做到这一点?或者,我可以在每个之前放一两步,以便我在内部数组中进行迭代吗?我需要能够从每个项目中提取[name][twitter_volume]

1 个答案:

答案 0 :(得分:1)

使用:

foreach($string[0]['trends'] as $items) {
    ...
}

或者如果在$strings的顶层有多个元素,则需要嵌套循环:

foreach ($string as $el) {
    foreach ($el['trends'] as $items) {
        ...
    }
}