StdClass to array?

У меня есть:

stdClass Object
(
    [0] => stdClass Object
        (
            [one] => aaa
            [two] => sss
        )

    [1] => stdClass Object
        (
            [one] => ddd
            [two] => fff
        )

    [2] => stdClass Object
        (
            [one] => ggg
            [two] => hhh
        )
}

и я должны получить это с помощью клавиш, например:

$var = $stdClass[0]; 

но у меня ошибка:

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

Можно ли проанализировать этот массив stdClass и использовать его с помощью клавиш?

Ответ 1

Передача его в массив:

$array = (array)$stdClass;

Ответ 2

Если вы используете json_decode для преобразования этой строки JSON в объект, вы можете использовать второй параметр json_decode($string, true) и преобразовать объект в ассоциативный массив.

Если нет, то, что говорили все остальные, и просто набирать текст

$array = (array) $stdClass;

Ответ 3

Ваша проблема, вероятно, решена с момента запроса, но для справки, быстрый ответ дяди-google:

function objectToArray($d) {
  if(is_object($d)) {
    $d = get_object_vars($d);
  }
  if(is_array($d)) {
    return array_map(__FUNCTION__, $d); // recursive
  } else {
    return $d;
  }
}

Полная статья здесь. Примечание. Я никак не связан с оригинальным автором.

Ответ 4

Вставить его

$array = (array) $stdObject;

Ответ 5

Конечно, вы можете typecast, $var = (array) $obj;, но я бы предложил ArrayAccess в ваш класс.

Используя ArrayAccess, вы можете обрабатывать свои объекты и данные так, как если бы это был массив или изначально как объект.

Ответ 6

Передайте его в массив. В настоящее время он не читается PHP как массив.

$array = (array)$stdClass;

Ответ 7

По существу, просто введите cast:

$arr = (array)$obj;
$var = $arr[0];

Но прочитайте оговорки здесь.

Ответ 8

Этот работал у меня, Декодирование и кодирование делают для регулярного массива

$array = json_decode(json_encode($object), True);

Ответ 9

stdClass - это объект, поэтому вы можете получить доступ к нему, например

echo stdClass->one;