у меня есть:
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
, вы можете обрабатывать свои объекты и данные так, как если бы они были массивом или изначально как объект.
По сути, просто напечатайте его:
$arr = (array)$obj; $var = $arr[0];
Но читайте здесь предостережения.
Бросьте его в массив. В настоящее время PHP не читается как массив.
$array = (array)$stdClass;
Это работало для меня. Декодирование и кодирование делают для регулярного массива
$array = json_decode(json_encode($object), True);
stdClass – объект, поэтому вы можете получить доступ к нему, как
echo stdClass->one;