Я пытаюсь получить двенадцать идентификаторов, которые показывают эта структура:
stdClass Object ( [checkins] => stdClass Object ( [count] => 12 [items] => Array ( [0] => stdClass Object ( [venue] => stdClass Object ( [id] => 4564654646456 . .
Я делаю:
$checkins = $fsObjUnAuth->get("/users/self/checkins"); $count = $checkins ->response->checkins->count; // so I can get 12 for( $i = 0; $i < $count; $i ++) { $a1[] = $checkins['items'][$i]['venue']['id']; //two tries $a2[] = $checkins ->response->checkins->items->$i->venue->id; echo $i; echo ": "; echo $a1;echo"<br>"; echo $a2;echo"<br>" }
Но я получаю: Fatal error: нельзя использовать объект типа stdClass как массив в строке.
Может кто-нибудь покажет мне, как это сделать?
большое спасибо
Вы не можете получить доступ к элементам объекта через оператор индексирования массива []
.
Вы должны использовать оператор ->
:
$x = new StdClass(); $x->member = 123;
В вашем случае вам придется использовать смесь, так как у вас есть объект ( $checkins
) с членом ( $items
), который является массивом, который содержит дополнительные объекты.
$a1[] = $checkins->items[$i]->venue->id;
Вот простое решение для преобразования объекта stdClass в массив в php с функцией get_object_vars
Посмотрите: http://php.net/manual/fr/function.get-object-vars.php
Пример:
debug($array); $var = get_object_vars($array); debug($var);
Или замените debug
на print_r
Я использую CakePHP framework
Cdt
изменение
$a1[] = $checkins['items'][$i]['venue']['id'];
изменился на
$a1[] = $checkins->items[$i]->venue->id;