Como extrair dados de um array pós meta-serializado?

15

Eu encontrei um script decodificador XML para WP que armazena os dados como uma matriz em um campo meta personalizado. Qual é a melhor maneira de extrair as informações?

Por exemplo, como eu poderia exibir o campo "Fabricado em" como "CANADA"?

[_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";}} )

O código de exemplo acima foi produzido por meio de print_r(get_post_custom($post->ID)); .

Eu realmente aprecio qualquer insight, não importa quão pequeno seja. :)

    
por torinagrippa 27.05.2011 / 16:21

1 resposta

23

Use unserialize () para convertê-lo em um array.

$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 - Pensamento relacionado - algo a ter em mente ao armazenar metadados serializados dessa forma é que você limita sua capacidade de usar esses dados em consultas, se isso for uma preocupação para você. por exemplo, não é tão fácil escrever consultas como "mostre-me todas as peças fabricadas no Canadá" ou peça resultados por ID do mecanismo, já que esses dados estão escondidos com um monte de outros dados em um campo.

    
por Milo 27.05.2011 / 16:34