Получить первый элемент в PHP stdObject

У меня есть объект (сохраненный как $ videos), который выглядит так:

object(stdClass)#19 (3) { [0]=> object(stdClass)#20 (22) { ["id"]=> string(1) "123" etc... 

Я хочу получить идентификатор только этого первого элемента, не зацикливая его.

Если бы это был массив, я бы сделал это:

 $videos[0]['id'] 

Он работал так:

 $videos[0]->id 

Но теперь я получаю сообщение об ошибке «Невозможно использовать объект типа stdClass as array …» в строке, показанной выше. Возможно, из-за обновления PHP.

Итак, как мне добраться до этого первого идентификатора без цикла? Является ли это возможным?

Благодаря!

Просто повторите его использование {}

Пример:

 $videos{0}->id 

Таким образом, ваш объект не уничтожается, и вы можете легко перебирать объект.

Для PHP 5.6 и выше используйте это

 $videos{0}['id'] 

Доступ к объектам как array (), так и stdClass можно получить с помощью функции end() next() prev() reset() end() функции current() .

Итак, если ваш объект выглядит

 object(stdClass)#19 (3) { [0]=> object(stdClass)#20 (22) { ["id"]=> string(1) "123" etc... 

Тогда вы можете просто сделать;

 $id = reset($obj)->id; //Gets the 'id' attr of the first entry in the object 

Если вам по какой-то причине нужен ключ, вы можете это сделать;

 reset($obj); //Ensure that we're at the first element $key = key($obj); 

Надеюсь, это сработает для вас. 🙂 Нет ошибок, даже в супер-строгом режиме, на PHP 5.4

Верный:

 $videos= (Array)$videos; $video = $videos[0]; 

Возможно, вы могли бы зациклиться на объекте и сломаться в первом цикле … Что-то вроде

 foreach($obj as $prop) { $first_prop = $prop; break; // or exit or whatever exits a foreach loop... } 

намного легче:

 $firstProp = current( (Array)$object ); 

$videos->{0}->id работал для меня.

Поскольку $ videos и {0} оба являются объектами, поэтому нам нужно получить доступ к id с помощью $videos->{0}->id . Кудрявые фигурные скобки требуются около 0, так как опускание фигурных скобок приведет к синтаксической ошибке: неожиданной «0», ожидающей идентификатора или переменной или «{» или «$».

Я использую PHP 5.4.3 .

В моем случае не было обработано ни $videos{0}->id $videos{0}['id'] а ошибка:

Нельзя использовать объект типа stdClass как массив.

Игра с интерактивной оболочкой Php, Php 7:

 ➜ ~ php -a Interactive shell php > $v = (object) ["toto" => "hello"]; php > var_dump($v); object(stdClass)#1 (1) { ["toto"]=> string(5) "hello" } php > echo $v{0}; PHP Warning: Uncaught Error: Cannot use object of type stdClass as array in php shell code:1 Stack trace: #0 {main} thrown in php shell code on line 1 Warning: Uncaught Error: Cannot use object of type stdClass as array in php shell code:1 Stack trace: #0 {main} thrown in php shell code on line 1 php > echo $v->{0}; PHP Notice: Undefined property: stdClass::$0 in php shell code on line 1 Notice: Undefined property: stdClass::$0 in php shell code on line 1 php > echo current($v); hello 

Только current работает с объектом.