Получить первый элемент в PHP stdObject
у меня есть объект (сохраненный как $videos), который выглядит так
object(stdClass)#19 (3) {
[0]=>
object(stdClass)#20 (22) {
["id"]=>
string(1) "123"
etc...
Я хочу получить идентификатор только этого первого элемента, без необходимости перебирать его.
Если бы это был массив, я бы сделал так:
$videos[0]['id']
раньше это работало так:
$videos[0]->id
но теперь я получаю ошибку " не могу использовать объект типа stdClass в качестве массива...- на линии, показанной выше. Возможно, из-за обновления PHP.
Итак, как мне добраться до этого первого идентификатора без зацикливание? Возможно ли это?
спасибо!
7 ответов:
просто повторите его с помощью {}
пример:
$videos{0}->idтаким образом, ваш объект не уничтожается, и вы можете легко перебирать объект.
для PHP 5.6 и выше используйте это
$videos{0}['id']
оба объекта array () и stdClass могут быть доступны с помощью
current()key()next()prev()reset()end()функции.так, если ваш объект выглядит как
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->{0}->idработал для меня.так как $videos и {0} оба являются объектами, поэтому мы должны получить доступ к id с
$videos->{0}->id. Фигурные скобки требуются около 0, так как пропуск скобок приведет к синтаксической ошибке : неожиданный '0', ожидающий идентификатор или переменную или '{' или '$'.Я использую PHP 5.4.3.
в моем случае, ни
$videos{0}->idи$videos{0}['id']работал и показывает ошибку:нельзя использовать объект типа stdClass в качестве массива.
вы можете зациклиться на объекте, возможно, и сломать первый цикл... Что-то вроде
foreach($obj as $prop) { $first_prop = $prop; break; // or exit or whatever exits a foreach loop... }
игра с PHP interactive shell, 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:: in php shell code on line 1 Notice: Undefined property: stdClass:: in php shell code on line 1 php > echo current($v); helloтолько
currentработает с объектом.
Comments