Как получить доступ к объекту stdclass после определенной пары значений ключа?
У меня есть объект stdclass, как показано ниже:
stdClass Object
(
[text] => Parent
[values] => Array
(
[0] => stdClass Object
(
[id] => /m/0c02911
[text] => Laurence W. Lane Jr.
[url] => http://www.freebase.com/view/m/0c02911
)
)
)
Я перебираю несколько таких объектов, некоторые из которых имеют
stdClass Object
(
[text] => Named after
[values] => Array
(
[0] => stdClass Object
(
[id] => /m/0c02911
[text] => Stanford
[url] => SomeURL
)
)
)
Мне было интересно, как мне получить доступ к объекту "values", если он приходит после "текста", который имеет "родительский" как его значение?
Ответы
Ответ 1
То, что вы ищете, это Object ['values'] [0]: "values" - это комбинация клавиш, как "текст", а [0] - индекс внутри того массива, к которому вы хотите получить доступ. поэтому, если вы хотите получить id в гнезде, вам нужно сделать что-то вроде
Object['values'][0]['id']
или
Object['values'][0]->id
который должен предоставить вам /m/ 0c02911. Но я понятия не имею, как вы делаете свой цикл, поэтому вам придется приспособить его к вашим потребностям и поместить надлежащие переменные, где им нужно идти в этом коде в вашем цикле. Не совсем уверен, на каком языке вы работаете.
Ответ 2
существуют серверные способы обращения к массиву:
Первое решение:
$value = get_object_vars($object);
Второе решение:
$value = (array) $object;
Третье решение
$value = json_decode(json_encode($object), true);
чтобы получить значение преобразованного массива
echo $value['values']['0']['id'];
Альтернативный способ доступа к объектам var без преобразования объекта, попробуйте
$object->values->{'0'}->id
Ответ 3
Расширяя (или, скорее, минимизируя) ответ от Somwang Souksavatd, мне нравится обращаться к значениям Object следующим образом:
echo get_object_vars($object)['values']['0']['id'];
Ответ 4
$Obj=stdClass Object
(
[text] => Named after
[values] => Array
(
[0] => stdClass Object
(
[id] => /m/0c02911
[text] => Stanford
[url] => SomeURL
)
)
)
$Values= $result->values;
$Item = $Values[0];
$id=$Item->id;
$text = $Item->text;
$url=$Item->url;
Ответ 5
Я делаю то же самое, и все, что я сделал, это:
<?php
$stdObject = json_decode($stdClassObject);
print $stdObject->values[0]->id;
Ответ 6
У меня была одна и та же проблема, но я не уверен, почему, но я смог заставить ее работать с помощью этого обходного пути:
$k2 ="1";
$elements = json_decode('{"id":"1","name":"User1"}');
//$elements['id'] == $k2; //****Not Working
$tmp = (object)$elements;
$tmp = $tmp ->id; //****Working
//$tmp =$elements['id'] ; //****Not Working
return $tmp == $k2;
Я должен сказать, что иногда доступ к элементу как массиву работает, а иногда нет, (на PHP7 он работал у меня, но на PHP5.6 он этого не делал).
$elements
может быть Array, но я решил продемонстрировать с помощью json-строки.
Надеюсь, это поможет как-то!!!