2016-02-22 3 views
1

Я работаю с API-интерфейсом Twitter для сбора информации о трендах. API возвращает JSON, и я пытаюсь разобрать данные.Итерация через вложенный массив в PHP

Вот мой соответствующий код (я не включая мои ключи и такие, и т.д.):

$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 
       ) 

... и так далее (я не буду перечислять весь массив).

Что мне нужно сделать, так это выполнить итерацию через массив [тенденции], а не родительский массив. Как я могу изменить свой цикл foreach, чтобы сделать это? В качестве альтернативы, могу ли я поставить шаг или два перед каждым для каждого, чтобы я выполнял итерацию через внутренний массив? Мне нужно иметь возможность извлекать [name] и [twitter_volume] из каждого элемента.

+0

Это значение '$ string'? – Barmar

ответ

0

Использование:

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

или если есть более одного элемента на верхнем уровне $strings, необходимо вложенные циклы:

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

Мне пришлось переходить в режим вложенного цикла из-за некоторых других вещей в конце запроса API. Это отличная подсказка для людей, обращающихся к API Twitter для получения данных! Благодарю. – CHCJoski

Смежные вопросы