Возвращает объект PHP по номеру индекса (не имя)

Цель: получить элемент данных из объекта PHP по номеру.

Это print_r ($ data) объекта:

stdClass Object ( [0] => stdClass Object ( [TheKey] => 1456 [ThingName] => Malibu [ThingID] => 7037 [MemberOf] => California [ListID] => 7035 [UserID] => 157 [UserName] => John Doe ) ) 

Я не могу понять, как извлечь из этого ценность. Это только одна запись объекта с несколькими записями, которая должна быть по id, а не по имени.

Вот некоторые неудачные попытки проиллюстрировать цель:

 echo $data -> 0 -> UserName; echo $data[0] -> UserName; 

Solutions Collecting From Web of "Возвращает объект PHP по номеру индекса (не имя)"

Обычно имена переменных PHP не могут начинаться с цифры. Вы не можете получить доступ к $data в виде массива, так как stdClass не реализует ArrayAccess – это обычный нормальный базовый класс.

Однако в подобных случаях вы можете попробовать получить доступ к атрибуту объекта по его числовому имени так:

 echo $data->{'0'}->UserName; 

Единственная причина, по которой я могу думать о том, почему ответ Spudley вызывает ошибку, заключается в том, что вы используете PHP 4, который не поддерживает использование foreach для итерации объектов.

Предложение BoltClock использовать «$ data -> {'0'} -> UserName, по-видимому, больше не работает с PHP 5.

У меня была та же проблема, и я обнаружил, что current () будет работать, чтобы получить этот нумерованный элемент класса, подобный этому …

 echo current($data)->UserName; 

Или, если это не работает (в зависимости от объекта), вам может понадобиться выполнить следующий вызов current () следующим образом:

 echo current(current($data))->UserName; 

это работает для PHP5 +

 echo $data[0]->UserName; 

или

 foreach ($data as $data){ echo $data->UserName; } 

или по предложению @orrd

 current($data)->UserName works great too. 

Вы пробовали цикл foreach() ? Это должно дать вам все доступные элементы, а возвращаемые ключи могут дать вам более четкое представление о том, как обращаться к ним напрямую.

попробуй это:

 echo $data[0]['UserName']; 

Согласно руководству, объекты не предназначены для использования таким образом. Комментарии на этой странице действительно обеспечивают способ, если это необходимо для вас. Вы также можете просто полагаться на массивы, если вы просто используете объект для свойств (а не для поведения).