2012-03-13 3 views
1

Всё, я использую функцию, как это:Невозможно использовать объект типа StdClass как массив

function themeblvd_twitter_slider_default($tweet, $options, $username) { 
    echo $tweet[0]->text; 
} 

Линия в функции дает мне следующее сообщение об ошибке: Фатальная ошибка: Невозможно использовать объект тип StdClass как массив

Когда я делаю print_r на $ твит я получаю следующий результат:

 
object(stdClass)#70 (19) { 
    ["in_reply_to_screen_name"]=> 
    NULL 
    ["in_reply_to_user_id"]=> 
    NULL 
    ["in_reply_to_status_id"]=> 
    NULL 
    ["coordinates"]=> 
    NULL 
    ["retweeted"]=> 
    bool(false) 
    ["created_at"]=> 
    string(30) "Mon Mar 12 16:54:05 +0000 2012" 
    ["id_str"]=> 
    string(18) "12345553333" 
    ["truncated"]=> 
    bool(false) 
    ["user"]=> 
    object(stdClass)#78 (38) { 
    ["id"]=> 
    int(522392463) 
    ["profile_image_url_https"]=> 
    string(73) "https://si0.twimg.com/profile_images/1891637329/turntable_dots_normal.jpg" 
    ["contributors_enabled"]=> 
    bool(false) 
    ["profile_use_background_image"]=> 
    bool(true) 
    ["lang"]=> 
    string(2) "en" 
    ["id_str"]=> 
    string(9) "522392463" 
    ["default_profile_image"]=> 
    bool(false) 
    ["geo_enabled"]=> 
    bool(false) 
    ["profile_text_color"]=> 
    string(6) "333333" 
    ["is_translator"]=> 
    bool(false) 
    ["favourites_count"]=> 
    int(0) 
    ["location"]=> 
    string(11) "Chicago, IL" 
    ["time_zone"]=> 
    NULL 
    ["utc_offset"]=> 
    NULL 
    ["show_all_inline_media"]=> 
    bool(false) 
    ["profile_sidebar_border_color"]=> 
    string(6) "C0DEED" 
    ["name"]=> 
    string(20) "name" 
    ["protected"]=> 
    bool(false) 
    ["profile_background_image_url_https"]=> 
    string(49) "https://si0.twimg.com/images/themes/theme1/bg.png" 
    ["profile_background_tile"]=> 
    bool(false) 
    ["following"]=> 
    NULL 
    ["profile_sidebar_fill_color"]=> 
    string(6) "DDEEF6" 
    ["follow_request_sent"]=> 
    NULL 
    ["default_profile"]=> 
    bool(true) 
    ["statuses_count"]=> 
    int(2) 
    ["description"]=> 
    string(56) "Description" 
    ["notifications"]=> 
    NULL 
    ["verified"]=> 
    bool(false) 
    ["profile_background_color"]=> 
    string(6) "C0DEED" 
    ["listed_count"]=> 
    int(0) 
    ["profile_image_url"]=> 
    string(71) "http://a0.twimg.com/profile_images/1891637329/turntable_dots_normal.jpg" 
    ["profile_background_image_url"]=> 
    string(47) "http://a0.twimg.com/images/themes/theme1/bg.png" 
    ["followers_count"]=> 
    int(3) 
    ["url"]=> 
    string(28) "http://www.website.com" 
    ["friends_count"]=> 
    int(9) 
    ["created_at"]=> 
    string(30) "Mon Mar 12 16:38:11 +0000 2012" 
    ["profile_link_color"]=> 
    string(6) "0084B4" 
    ["screen_name"]=> 
    string(10) "Username" 
    } 
    ["in_reply_to_status_id_str"]=> 
    NULL 
    ["geo"]=> 
    NULL 
    ["retweet_count"]=> 
    int(0) 
    ["favorited"]=> 
    bool(false) 
    ["place"]=> 
    NULL 
    ["source"]=> 
    string(3) "web" 
    ["in_reply_to_user_id_str"]=> 
    NULL 
    ["contributors"]=> 
    NULL 
    ["id"]=> 
    float(1.7924891374269E+17) 
    ["text"]=> 
    string(140) "This is the tweet" 
} 

Как я могу получить текст без получения ошибки?

Спасибо!

+0

Вы вызываете '$ tweet [0]', который не существует ... – Jon

ответ

4

Ошибка означает, что именно, $tweet не является массивом, поэтому нет смысла пытаться получить его 0-й индекс.

$tweet->text должно быть просто отлично :)

Если вы убедитесь, что $ твит массив информаций твит:

foreach($tweet as $t) { 
    echo $t->text; 
} 
+0

Если у меня есть более одного твита, как это будет выглядеть? – user1048676

+0

отредактировал мой ответ –

2

Самый простой способ бросить $tweet как массив:

$tweet = (array)$tweet; 
Смежные вопросы