2011-12-14 2 views
2

Я использую Quizlet API 2.0, и я довольно новыми для этогоКак бы я прочитал этот массив («StdClass Object»)

Как прочитать значение (ы) из чего-то вроде этого:

stdClass Object ([id] => 102269 [name] => Learn Spanish with Cats! [set_count] => 3 [user_count] => 10 [created_date] => 1308035691 [is_public] => 1 [has_password] => [has_access] => 1 [has_discussion] => 1 [member_add_sets] => 1 [description] => This set is exclusively for Spanish flashcard sets with relevant cat images as the set definitions. [sets] => Array ([0] => stdClass Object ([id] => 6081999 [url] => http://quizlet.com/6081999/lesson-4-with-catsdogs-flash-cards/ [title] => Lesson 4 (with cats+dogs) [created_by] => wsvincent [term_count] => 33 [created_date] => 1311984796 [modified_date] => 1312490710 [has_images] => 1 [subjects] => Array ([0] => spanish cats dogs) [visibility] => public [editable] => groups [has_access] => 1) [1] => stdClass Object ([id] => 5855751 [url] => http://quizlet.com/5855751/paso-a-paso-book-1-chapter-4-flash-cards/ [title] => Paso a Paso Book 1 Chapter 4 [created_by] => catdawg426 [term_count] => 30 [created_date] => 1307761267 [modified_date] => 1307819129 [has_images] => 1 [subjects] => Array ([0] => spanish) [visibility] => public [editable] => only_me [has_access] => 1) [2] => stdClass Object ([id] => 5873819 [url] => http://quizlet.com/5873819/los-gatos-de-viaje-flash-cards/ [title] => Los Gatos de Viaje! [created_by] => tiffreja [term_count] => 21 [created_date] => 1307996657 [modified_date] => 1307996796 [has_images] => 1 [subjects] => Array ([0] => spanish [1] => language [2] => foreign) [visibility] => public [editable] => only_me [has_access] => 1)) [members] => Array ([0] => stdClass Object ([username] => philfreo [role] => creator [email_notification] => 1) [1] => stdClass Object ([username] => milkncookies [role] => member [email_notification] => 1) [2] => stdClass Object ([username] => Icypaw [role] => member [email_notification] =>) [3] => stdClass Object ([username] => luckycat10 [role] => member [email_notification] =>) [4] => stdClass Object ([username] => jeffchan [role] => member [email_notification] =>) [5] => stdClass Object ([username] => catchdave [role] => member [email_notification] => 1) [6] => stdClass Object ([username] => tiffreja [role] => member [email_notification] => 1) [7] => stdClass Object ([username] => catdawg426 [role] => member [email_notification] => 1) [8] => stdClass Object ([username] => ihaque [role] => member [email_notification] => 1) [9] => stdClass Object ([username] => jalenack [role] => member [email_notification] => 1))) 

Например, если я хочу получить имя этого первого набора, «Изучайте испанский язык с помощью кошек», как я могу его повторить с помощью переменной?

Он уже преобразует JSON в массив, я думаю:

$data = json_decode($json); 
+0

Когда вы вставляете такой свалку, убедитесь, что вы включили разрывы строк. –

+0

'json_decode()' с одним аргументом не преобразовывает JSON в массив. См. Http://php.net/json_decode – salathe

+1

Если вы добавите второй аргумент 'json_decode ($ json, true);' Когда TRUE, возвращенные объекты будут преобразованы в ассоциативные массивы. –

ответ

12

Ваш объект не является массивом, а, ну, объект. Так используйте оператор -> для доступа к его свойства:

echo $data->name; 

Он содержит свойство, которое само по себе является массивом дополнительных объектов. Например, чтобы получить URL с идентификатором 6081999, вы могли бы сделать:

echo $data->sets[0]->url; 
// http://quizlet.com/6081999/lesson-4-with-catsdogs-flash-cards/ 
+0

Что делать, если в качестве идентификатора было несколько наборов с «именем»? Будет ли это '$ data-> name [1]'? –

+0

@GrayAdams Я просто обратился к аналогичной проблеме в редактировании. Для наборов, которые являются массивом, вы используете индекс массива '[]', за которым следует желаемое свойство объекта через '->' –

1

Используйте функцию ключа

eg echo key($array) 
1

Я смотрел что-то раньше, когда вы используете json_decode()

$data = json_decode(); 

U может отправить несколько параметров, первый из них это «$ json», это будет строка json

{"1":"first","2":"second"} 

Но это json-декодирование с одним параметром возвращает объект, а значение по умолчанию для второго параметра - «false». Если вы хотите вернуться в массив, вам нужно будет использовать второй параметр и отправить «true».

$data =json_decode($json,true); 

И вы можете recibe его как массив. :)

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