Как бы я прочитал этот массив ("объект stdClass") - PullRequest
3 голосов
/ 15 декабря 2011

Я использую Quizlet API 2.0, и я довольно новичок в этом

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

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

Ответы [ 5 ]

13 голосов
/ 15 декабря 2011

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

echo $data->name;

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

echo $data->sets[0]->url;
// http://quizlet.com/6081999/lesson-4-with-catsdogs-flash-cards/
1 голос
/ 19 апреля 2016

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

$data = json_decode();

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

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

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

$data =json_decode($json,true);

И вы можете получить его как массив.:)

1 голос
/ 19 апреля 2013

Вот простое решение для преобразования объекта stdClass в массиве в php с get_object_vars

Посмотрите на: http://php.net/manual/fr/function.get-object-vars.php

Пример:

debug($array);
$var = get_object_vars($array);
debug($var);

Или заменить debug на print_r

Cdt

1 голос
/ 19 февраля 2013

Использовать функциональную клавишу

eg echo key($array)
0 голосов
/ 08 октября 2018

Если вы получили объект stdClass в массиве, например,
$user = $result1->fetch_object(), затем установите $user в переменную $val = $user->user_id (убедитесь, что user_id - это имя столбца вашей базы данных, а также имя столбца).Вы получите одно значение в $ val из базы данных.

...