stdClass Объект и массив, как использовать PHP - PullRequest
5 голосов
/ 01 марта 2011

Я пытаюсь получить двенадцать идентификаторов, которые показывает эта структура:

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>"
  } 

Но я получаю: Неустранимая ошибка: невозможно использовать объект типа stdClass в качестве массива в строке.

Пожалуйста, кто-нибудь может показать мне, как это сделать?

Большое спасибо

Ответы [ 3 ]

9 голосов
/ 01 марта 2011

Вы не можете получить доступ к членам объекта через оператор индекса массива [].

Вы должны использовать оператор ->:

$x = new StdClass();

$x->member = 123;

В вашем случае вам придется использовать смесь, поскольку у вас есть объект ($checkins) с членом ($items), который является массивом, который содержит дополнительные объекты.

$a1[] = $checkins->items[$i]->venue->id;
2 голосов
/ 19 апреля 2013

Вот простое решение для преобразования объекта 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

0 голосов
/ 01 марта 2011

изменить

$a1[] = $checkins['items'][$i]['venue']['id'];

изменено на

$a1[] = $checkins->items[$i]->venue->id; 
...