Saltar al contenido

Convertir un objeto PHP en un asociativo array

Esta es el arreglo más correcta que encomtrarás dar, sin embargo estúdiala pausadamente y valora si es compatible a tu proyecto.

Solución:

Solo encasillalo

$array = (array) $yourObject;

Desde arreglos:

Si un objeto se convierte en un arrayel resultado es un array cuyos elementos son las propiedades del objeto. los keys son los nombres de las variables miembro, con algunas excepciones notables: las propiedades enteras no son accesibles; las variables privadas tienen el nombre de la clase antepuesto al nombre de la variable; las variables protegidas tienen un ‘*’ antepuesto al nombre de la variable. Estos valores antepuestos tienen null bytes a cada lado.

Ejemplo: objeto simple

$object = new StdClass;
$object->foo = 1;
$object->bar = 2;

var_dump( (array) $object );

Producción:

array(2) 
  'foo' => int(1)
  'bar' => int(2)

Ejemplo: objeto complejo

class Foo

    private $foo;
    protected $bar;
    public $baz;

    public function __construct()
    
        $this->foo = 1;
        $this->bar = 2;
        $this->baz = new StdClass;
    


var_dump( (array) new Foo );

Salida (con s editado para mayor claridad):

array(3) 
  'Foofoo' => int(1)
  '*bar' => int(2)
  'baz' => class stdClass#2 (0) 

Salida con var_export en lugar de var_dump:

array (
  '' . "" . 'Foo' . "" . 'foo' => 1,
  '' . "" . '*' . "" . 'bar' => 2,
  'baz' =>
  stdClass::__set_state(array(
  )),
)

Encasillar de esta manera no hará una conversión profunda del gráfico de objetos y necesita aplicar el null bytes (como se explica en la cita manual) para acceder a cualquier no público attributes. Por lo tanto, esto funciona mejor cuando se emiten objetos StdClass u objetos con solo propiedades públicas. Para rápido y sucio (lo que pediste) está bien.

También vea esta entrada de blog en profundidad:

  • Conversión rápida de objeto PHP a matriz

Puede convertir rápidamente objetos profundamente anidados en matrices asociativas confiando en el comportamiento de las funciones de codificación/descodificación de JSON:

$array = json_decode(json_encode($nested_object), true);

Desde el primer hit de Google para “Objeto PHP para asociar array“tenemos esto:

function object_to_array($data)

La fuente está en codesnippets.joyent.com.

Te invitamos a auxiliar nuestra faena fijando un comentario y puntuándolo te estamos agradecidos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *