recorrer array acceder php

php - acceder - stdClass a array?



stdclass object to array php (10)

Echarlo

$array = (array) $stdObject;

yo tengo:

stdClass Object ( [0] => stdClass Object ( [one] => aaa [two] => sss ) [1] => stdClass Object ( [one] => ddd [two] => fff ) [2] => stdClass Object ( [one] => ggg [two] => hhh ) }

Y debo obtener esto con las claves, por ejemplo:

$var = $stdClass[0];

pero tengo error

Error grave: no se puede utilizar el objeto de tipo stdClass como matriz en

¿Es posible analizar este stdClass a array y usarlo con claves?


Esencialmente, basta con escribirlo

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

Pero lea las advertencias here .


Este funcionó para mí, la decodificación y la codificación hacen para una matriz regular

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


Lanzarlo a una matriz:

$array = (array)$stdClass;


Lanzarlo en una matriz Actualmente no es legible para PHP como una matriz.

$array = (array)$stdClass;


Por supuesto que puede hacer typecast, $var = (array) $obj; , pero sugeriría ArrayAccess a tu clase.

Al utilizar ArrayAccess , puede tratar sus objetos y datos como si fuera una matriz, o de forma nativa como un objeto.


Si está utilizando json_decode para convertir esa cadena JSON en un objeto, puede usar el segundo parámetro json_decode($string, true) y eso convertirá el objeto en una matriz asociativa.

Si no, lo que todos los demás han dicho y simplemente teclea

$array = (array) $stdClass;


Si tiene una matriz anidada, puede usar json_encode y json_decode para convertir todo el objeto en una matriz:

$result = json_decode(json_encode($source), JSON_OBJECT_AS_ARRAY);


Su problema probablemente se haya resuelto desde la pregunta, pero como referencia, respuesta rápida de tío-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; } }

Artículo completo here . Tenga en cuenta que no estoy asociado con el autor original de ninguna manera.


stdClass es un objeto por lo que u puede acceder al valor desde

echo stdClass->one;