2013-08-18 2 views
0

Я использую API Twitter для v.1.1 для получения твитов, относящихся к определенным хэш-тегам.Разбор JSON/ассоциативных массивов из ответа Twitter API в PHP

$tweets = $connection->get("xxxxxxxxxxxxxxx"); 
$tweets = json_encode($tweets); 

echo '<pre>'; 
    $objJson = json_decode($tweets, TRUE); 
    print_r ($objJson); 
    echo '</pre>'; 
?> 

Выше приведен код, который я использую для получения ответа.

Это ответ я получаю назад

Array 
(
    [statuses] => Array 
     (
      [0] => Array 
       (
        [metadata] => Array 
         (
          [result_type] => recent 
          [iso_language_code] => en 
         ) 

        [created_at] => Sun Aug 18 16:24:36 +0000 2013 
        [id] => 369132733080936448 
        [id_str] => 369132733080936448 
        [text] => Macy's Almeda, Houston, TX: Retail Commission Sales Associa - http://t.co/iz3YdBBCzC#jobs #Macy's #Houston 
        [source] => Best Jobs Online 
        [truncated] => 
        [in_reply_to_status_id] => 
        [in_reply_to_status_id_str] => 
        [in_reply_to_user_id] => 
        [in_reply_to_user_id_str] => 
        [in_reply_to_screen_name] => 
        [user] => Array 
         (
          [id] => 237507695 
          [id_str] => 237507695 
          [name] => Best Jobs 
          [screen_name] => bestjobsonline 
          [location] => 
          [description] => Best Jobs Online - we search the web for the best internships and jobs for you. No need to search yourself! Follow our stream and boost your career! 
          [url] => http://t.co/SkmHCpOnzM 
          [entities] => Array 
           (
            [url] => Array 
             (
              [urls] => Array 
               (
                [0] => Array 
                 (
                  [url] => http://t.co/SkmHCpOnzM 
                  [expanded_url] => http://www.internships2013.com 
                  [display_url] => internships2013.com 
                  [indices] => Array 
                   (
                    [0] => 0 
                    [1] => 22 
                   ) 

                 ) 

               ) 

             ) 

            [description] => Array 
             (
              [urls] => Array 
               (
               ) 

             ) 

           ) 

          [protected] => 
          [followers_count] => 6172 
          [friends_count] => 13 
          [listed_count] => 240 
          [created_at] => Thu Jan 13 00:36:32 +0000 2011 
          [favourites_count] => 0 
          [utc_offset] => -18000 
          [time_zone] => Central Time (US & Canada) 
          [geo_enabled] => 
          [verified] => 
          [statuses_count] => 847813 
          [lang] => en 
          [contributors_enabled] => 
          [is_translator] => 
          [profile_background_color] => 022330 
          [profile_background_image_url] => http://a0.twimg.com/images/themes/theme15/bg.png 
          [profile_background_image_url_https] => https://si0.twimg.com/images/themes/theme15/bg.png 
          [profile_background_tile] => 
          [profile_image_url] => http://a0.twimg.com/profile_images/1214148827/bjo_logo_normal.png 
          [profile_image_url_https] => https://si0.twimg.com/profile_images/1214148827/bjo_logo_normal.png 
          [profile_link_color] => 0084B4 
          [profile_sidebar_border_color] => A8C7F7 
          [profile_sidebar_fill_color] => C0DFEC 
          [profile_text_color] => 333333 
          [profile_use_background_image] => 1 
          [default_profile] => 
          [default_profile_image] => 
          [following] => 
          [follow_request_sent] => 
          [notifications] => 
         ) 

        [geo] => 
        [coordinates] => 
        [place] => 
        [contributors] => 
        [retweet_count] => 0 
        [favorite_count] => 0 
        [entities] => Array 
         (
          [hashtags] => Array 
           (
            [0] => Array 
             (
              [text] => jobs 
              [indices] => Array 
               (
                [0] => 86 
                [1] => 91 
               ) 

             ) 

            [1] => Array 
             (
              [text] => Macy 
              [indices] => Array 
               (
                [0] => 92 
                [1] => 97 
               ) 

             ) 

            [2] => Array 
             (
              [text] => Houston 
              [indices] => Array 
               (
                [0] => 100 
                [1] => 108 
               ) 

             ) 

           ) 

          [symbols] => Array 
           (
           ) 

          [urls] => Array 
           (
            [0] => Array 
             (
              [url] => http://t.co/iz3YdBBCzC 
              [expanded_url] => http://bit.ly/16UtroW 
              [display_url] => bit.ly/16UtroW 
              [indices] => Array 
               (
                [0] => 63 
                [1] => 85 
               ) 

             ) 

           ) 

          [user_mentions] => Array 
           (
           ) 

         ) 

        [favorited] => 
        [retweeted] => 
        [possibly_sensitive] => 
        [lang] => en 
       ) 

Как отформатировать этот ответ только покажите мне дату и текст каждого из этих твиты. Спасибо за помощь. Я ноб, и любая помощь пригодится!

ответ

1

Этот цикл проходит через ваши статусы и добавляет значения created_at и text в новый массив.

$data = array(); 
foreach($objJson["statuses"] as $status) { 
    $data[] = array(
     "created_at" => $status["created_at"], 
     "text" => $status["text"] 
    ); 
} 
echo "<pre>" . print_r($data,1) . "</pre>"; 
+0

Привет, Спасибо за помощь. Я попробовал ваш код и теперь получаю эти сообщения об ошибках: «Попытка получить свойство не-объекта» & «Недопустимый аргумент, предоставленный foreach()» Сейчас мой код: '$ tweets = $ connection-> get ("https://api.twitter.com/1.1/search/tweets.json?q=%23macy"); $ tweets = json_encode ($ tweets); $ obJson = json_decode ($ tweets, TRUE); $ data = array(); foreach ($ obJson-> statuses as $ status) { $ data [] = array ( "created_at" => $ status-> createdAt, "text" => $ status-> text ); } echo "

" . print_r($data,1) . "
"; ' – user2694239

+0

Я изменил свой код некоторое время назад, потому что я сначала не видел TRUE в json_decode, а это значит, что вы не хотите, чтобы объект, но ассоциативный массив. Поэтому попробуйте новый код! –