Ответ 1
Передача его в массив:
$array = (array)$stdClass;
У меня есть:
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 и использовать его с помощью клавиш?
Передача его в массив:
$array = (array)$stdClass;
Если вы используете json_decode
для преобразования этой строки JSON в объект, вы можете использовать второй параметр json_decode($string, true)
и преобразовать объект в ассоциативный массив.
Если нет, то, что говорили все остальные, и просто набирать текст
$array = (array) $stdClass;
Ваша проблема, вероятно, решена с момента запроса, но для справки, быстрый ответ дяди-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;
}
}
Полная статья здесь. Примечание. Я никак не связан с оригинальным автором.
Вставить его
$array = (array) $stdObject;
Конечно, вы можете typecast, $var = (array) $obj;
, но я бы предложил ArrayAccess
в ваш класс.
Используя ArrayAccess
, вы можете обрабатывать свои объекты и данные так, как если бы это был массив или изначально как объект.
Передайте его в массив. В настоящее время он не читается PHP как массив.
$array = (array)$stdClass;
По существу, просто введите cast:
$arr = (array)$obj;
$var = $arr[0];
Но прочитайте оговорки здесь.
Этот работал у меня, Декодирование и кодирование делают для регулярного массива
$array = json_decode(json_encode($object), True);
stdClass - это объект, поэтому вы можете получить доступ к нему, например
echo stdClass->one;