Как я могу использовать PHP для получения n-го элемента в объекте JSON? - PullRequest
3 голосов
/ 24 июня 2010

Итак, ежедневный список трендов в Твиттере составляет 20 трендов. Допустим, я хочу получить 7-й тренд в списке. Вот мой давний способ сделать это ...

// We want the 7th item in the array
$trendArray = 7;

// Get an array (?) of the latest twitter trends
$jsonurl = "http://search.twitter.com/trends/daily.json";
$json = file_get_contents($jsonurl,0,null,null);
$json_output = json_decode($json);
$allTrends = $json_output->trends;

// Cycle through to the 7th in the list
foreach ( $json_output->trends as $trendslist ) {
    foreach ( $trendslist as $trend ) {
            $loop += 1;
            if ($loop == $trendArray) {     
                $theTrend = $trend->name;
                break;  
            }
    }
    break; // Exit after we've looped once
}   

echo $theTrend;

Я подозреваю, что путаю объекты и массивы, но я уверен, что есть гораздо более простой способ сделать это, чем с этими двумя циклами for / each, потому что

$theTrend = $json_output->trends[6]->name;

Дает мне эту ошибку:

Fatal error: Cannot use object of type stdClass as array 

Спасибо за вашу помощь!

1 Ответ

6 голосов
/ 24 июня 2010
$json_output = json_decode($json);

должно быть:

$json_output = json_decode($json,true);

(Вы должны указать json преобразовать stdClass в массивы)

РЕДАКТИРОВАТЬ: см. http://php.net/manual/en/function.json-decode.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...