¿Cómo convertir una matriz en un objeto en PHP?
¿Cómo puedo convertir una matriz como esta en un objeto?
[128] => Array
(
[status] => "Figure A.
Facebook's horizontal scrollbars showing up on a 1024x768 screen resolution."
)
[129] => Array
(
[status] => "The other day at work, I had some spare time"
)
En el caso más simple, probablemente sea suficiente "convertir" la matriz como un objeto:
$object = (object) $array;
Otra opción sería crear una instancia de una clase estándar como una variable y recorrer su matriz mientras reasigna los valores:
$object = new stdClass();
foreach ($array as $key => $value)
{
$object->$key = $value;
}
Como señaló Edson Medinajson_
, una solución realmente limpia es utilizar las funciones integradas :
$object = json_decode(json_encode($array), FALSE);
Esto también convierte (recursivamente) todas sus submatrices en objetos, que puede que desee o no. Desafortunadamente, tiene un rendimiento de 2 a 3 veces mayor que el enfoque de bucle.
¡Advertencia! (gracias a Ultra por el comentario):
json_decode en diferentes entornos convierte datos UTF-8 de diferentes maneras. Termino obteniendo valores '240,00' localmente y '240' en producción: un desastre masivo. Además, si la conversión falla, la cadena se devuelve como NULL
simplemente puede usar la conversión de tipos para convertir una matriz en un objeto.
// *convert array to object* Array([id]=> 321313[username]=>shahbaz)
$object = (object) $array_name;
//now it is converted to object and you can access it.
echo $object->username;