¿Cómo extraer datos de una matriz post meta serializada?

23

Encontré un script de decodificador XML a WP que almacena los datos como una matriz en un metacampo personalizado. ¿Cuál es la mejor manera de extraer la información?

Por ejemplo, ¿cómo podría mostrar el campo "Fabricado en" como "CANADÁ"?

[_ttn_i_details] => Array ( [0] => a:5:{s:9:"engine_id";a:1:{i:0;s:9:"300000225";}s:15:"transmission_id";a:1:{i:0;s:6:"257691";}s:5:"plant";a:1:{i:0;s:23:"Oshawa, Ontario, Canada";}s:15:"Manufactured in";a:1:{i:0;s:6:"CANADA";}s:22:"Production Seq. Number";a:1:{i:0;s:6:"151411";}} )

El código de ejemplo anterior se produjo a través de print_r(get_post_custom($post->ID));.

Realmente aprecio cualquier idea, por pequeña que sea. :)

m-torin
fuente
1
Si va a rechazar una pregunta, al menos sea lo suficientemente adulto como para decir por qué. Estoy tratando de aprender php. Esto puede ser algo básico para la mayoría de los programadores, pero vengo de un entorno de diseño.
m-torin

Respuestas:

35

Use unserialize () para convertirlo en una matriz.

$mydata = 'a:5:{s:9:"engine_id";a:1:{i:0;s:9:"300000225";}s:15:"transmission_id";a:1:{i:0;s:6:"257691";}s:5:"plant";a:1:{i:0;s:23:"Oshawa, Ontario, Canada";}s:15:"Manufactured in";a:1:{i:0;s:6:"CANADA";}s:22:"Production Seq. Number";a:1:{i:0;s:6:"151411";}}';
$mydata = unserialize($mydata);
echo $mydata['Manufactured in'][0];

Editar : pensamiento relacionado, algo a tener en cuenta al almacenar metadatos serializados de esta manera es que limita su capacidad de usar esos datos en consultas, si eso es una preocupación para usted. por ejemplo, no es tan fácil escribir consultas como "muéstrame todas las piezas fabricadas en Canadá", o pedir resultados por ID de motor, ya que esos datos se guardan con un montón de otros datos en un campo.

Milo
fuente
@ M.Taylor: de nada, revise la edición que agregué sobre los datos y consultas en serie, no estoy seguro de que sea una preocupación para usted, pero puede ser.
Milo
Hace un gran punto sobre perder la capacidad de buscar los datos. Tendré que investigar cómo no almacenarlo en una matriz serializada, dado que no escribí el script.
m-torin
@ M. Taylor No lo siento, lo siento. Sin embargo, estoy seguro de que alguien aquí puede ayudar.
Milo