Intereting Posts
Обработка на стороне клиента или на стороне сервера? Возможно ли получить список категорий eBay через API программно? Как получить широту и долготу пользователя по IP-адресу или точному местоположению Пример кода AJAX Codeigniter почему эта функция обработки ошибок вызывает зависание domdocument ()? Количество эхо-записей MySQL, которое имеет одинаковый идентификатор сеанса Отправьте объект JSON с Android на PHP-сервер с помощью метода POST и HttpURLConnection file_get_contents с включенной информацией о хешах [PHP Предупреждение: mail (): «sendmail_from» не установлен в php.ini или пользовательский заголовок «From:» отсутствует Получить подсчитанный массив для документа получить последний обновленный столбец в mysql PHP: укажите имя массива объектов JSON? Почему я должен использовать систему шаблонов в PHP? form_open () не работает в codeigniter В Laravel, как я могу получить * только * параметры POST?

Как получить доступ к объекту 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», если он приходит после «текста», который имеет «родительский» как его значение?

То, что вы ищете, это Object ['values'] [0]: «values» – это комбинация клавиш, подобная «text», а [0] – индекс внутри того массива, к которому вы хотите получить доступ. поэтому, если вы хотите получить id в гнезде, вам нужно будет сделать что-то вроде

 Object['values'][0]['id'] 

или

 Object['values'][0]->id 

который должен предоставить вам / m / 0c02911. Но я понятия не имею, как вы делаете свой цикл, поэтому вам придется приспособить его к вашим потребностям и поместить надлежащие переменные, где им нужно идти в этом коде в вашем цикле. Не совсем уверен, на каком языке вы работаете.

есть серверные способы превратить его в массив:

Первое решение:

$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 

Расширяя (или, скорее, минимизируя) ответ от Somwang Souksavatd, мне нравится обращаться к значениям Object следующим образом:

 echo get_object_vars($object)['values']['0']['id']; 
$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;
$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; 

Я делаю то же самое, и все, что я сделал, было этим;

 <?php $stdObject = json_decode($stdClassObject); print $stdObject->values[0]->id; 

У меня была одна и та же проблема, все еще не так уверенная, почему, но я смог заставить ее работать с помощью этого обходного пути:

 $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-строки.

Надеюсь, это поможет!