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;