> Faqs > Cómo convertir un objeto PHP en un array asociativo

Cómo convertir un objeto PHP en un array asociativo

Tengo un objeto en PHP que me viene de un JSON:

$json = '{
  "type": "product",
  "action": "buy",
  "subject": "Compra de productos",
  "messageBody": null
}';

Lo convierto en un objeto PHP:

$jsonObject = json_decode($json);

Hasta ahí todo bien, lo que pasa es que mi sistema necesita usar esos datos que me vienen de JSON como si fuera un array asociativo (array con claves de tipo cadena, con los nombres de las propiedades como los índices del array)

Pero el caso es que lo que devuelve json_decode() es un objeto y no un array.

¿Cómo puedo convertir la variable de PHP tipo objeto en una variable PHP tipo array asociativo?

Respuestas

Esto es muy sencillo gracias a lo que se llama "casting", que es la conversión forzada de un tipo en otro.

En PHP si quieres convertir un objeto a un array asociativo simplemente tienes que hacer el casting a array.

$jsonArray = (array) $jsonObject;

Usando tu código JSON, para convertirlo harías lo siguiente:

$json = '{
  "type": "product",
  "action": "buy",
  "subject": "Compra de productos",
  "messageBody": null
}';

$jsonArray = (array) json_decode($json);

Si haces un var_dump($jsonArray) entonces tienes esta salida:

array(4) {
  ["type"]=>
  string(7) "product"
  ["action"]=>
  string(3) "buy"
  ["subject"]=>
  string(19) "Compra de productos"
  ["messageBody"]=>
  NULL
}
Juanjo
243 8 18 5
Muchas gracias por estos truquitos, me sirven muy bien para mi, que apenas estoy comenzando con PHP.