Comment extraire des données d'un tableau post méta sérialisé?
-
-
Si vous allez voter contre une question,soyez aumoins assez adultepour direpourquoi.J'essaie d'apprendre lephp.Celapeut être une chosebasiquepour laplupart desprogrammeurs,maisje viens d'un arrière-plan de conception.If your going to vote down a question at least be adult enough to say why. I'm trying hard to learn php. This may be a basic thing to most programmers but I'm coming from a design background.
- 1
- 2011-05-27
- m-torin
-
1 réponses
- votes
-
- 2011-05-27
Utilisez unserialize () pour le convertiren untableau.
$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 - Réflexion connexe - un élément àgarder à l'esprit lors du stockage demétadonnées sérialisées de cettemanièreest que vous limitez votre capacité à utiliser ces données dans les requêtes,si cela vouspréoccupe.parexemple,iln'estpas sifacile d'écrire des requêtestelles que «montre-moitoutes lespiècesfabriquées au Canada»,ou de commander les résultatsparnuméro demoteur,car ces données sont cachées avec untas d'autres données dans un champ.
Use unserialize() to convert it into an 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];
Edit- Related thought- something to keep in mind when storing meta data serialized like this is that you limit your ability to use that data in queries, if that's a concern for you. for instance, it's not so easy to write queries like "show me all parts manufactured in Canada", or order results by engine id, since that data is tucked away with a bunch of other data in one field.
-
@ M.Taylor - de rien,vérifiez lamodification quej'ai ajoutée àpropos des données sérialiséeset des requêtes,je ne suispas sûr que ce soit unepréoccupationpour vous,mais celapeut l'être.@M.Taylor - you're welcome, check the edit I added about serialized data and queries, not sure it's a concern for you, but it may be.
- 0
- 2011-05-27
- Milo
-
Vousinsistez sur laperte de la capacité de rechercher les données.Je vais devoir regarder commentne pas le stocker dans untableau sérialisé,étant donné queje n'aipas écrit le script.You make a great point about losing the ability to search the data. I'll have to look into how to not store it in a serialized array, given that I didn't write the script.
- 0
- 2011-05-27
- m-torin
-
@ M.Taylor Jen'aipas,désolé.Je suis sûr que quelqu'unicipeut vous aider.@M.Taylor I don't, sorry. I'm sure someone here can help though.
- 0
- 2011-05-27
- Milo
J'aitrouvé un script de décodeur XML vers WP qui stocke les données sousforme detableau dans un champmétapersonnalisé.Quelleest lameilleurefaçon d'extraire lesinformations?
Parexemple,commentpuis-je afficher le champ "Fabriquéen" sous laforme "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 vraimenttouteperspicacité,aussipetite soit-elle.:)