¿Cómo convertir una matriz en un objeto en PHP?

Resuelto streetparade asked hace 54 años • 35 respuestas

¿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"
    )
streetparade avatar Jan 01 '70 08:01 streetparade
Aceptado

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

jlb avatar Dec 08 '2009 19:12 jlb

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;
Shahbaz avatar Sep 17 '2013 14:09 Shahbaz