Comment extraire des données d'un tableau post-méta sérialisé?

23

J'ai trouvé un script de décodeur XML vers WP qui stocke les données sous forme de tableau dans un champ méta personnalisé. Quelle est la meilleure façon d'extraire les informations?

Par exemple, comment pourrais-je afficher le champ "Fabriqué en" sous "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";}} )

L'exemple de code ci-dessus a été produit via print_r(get_post_custom($post->ID));.

J'apprécie vraiment tout aperçu, aussi petit soit-il. :)

m-torin
la source
1
Si vous allez voter contre une question, soyez au moins assez adulte pour dire pourquoi. J'essaye dur d'apprendre php. Cela peut être une chose fondamentale pour la plupart des programmeurs, mais je viens d'un arrière-plan de conception.
m-torin

Réponses:

35

Utilisez unserialize () pour le convertir en tableau.

$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];

Modifier - Pensée associée - quelque chose à garder à l'esprit lors du stockage de métadonnées sérialisées comme ceci est que vous limitez votre capacité à utiliser ces données dans des requêtes, si cela vous inquiète. par exemple, il n'est pas si facile d'écrire des requêtes comme «montrez-moi toutes les pièces fabriquées au Canada» ou de commander les résultats par identifiant de moteur, car ces données sont cachées avec un tas d'autres données dans un seul champ.

Milo
la source
@ M.Taylor - vous êtes les bienvenus, vérifiez la modification que j'ai ajoutée sur les données et les requêtes sérialisées, vous n'êtes pas sûr que cela vous préoccupe, mais cela peut l'être.
Milo
Vous faites un bon point sur la perte de la possibilité de rechercher les données. Je vais devoir voir comment ne pas le stocker dans un tableau sérialisé, étant donné que je n'ai pas écrit le script.
m-torin
@ M.Taylor non, désolé. Je suis sûr que quelqu'un ici peut vous aider.
Milo