Wie extrahiere ich Daten aus einem Post-Meta-Array?

23

Ich habe ein XML-zu-WP-Decoder-Skript gefunden, das die Daten als Array in einem benutzerdefinierten Metafeld speichert. Wie lassen sich die Informationen am besten extrahieren?

Wie könnte ich beispielsweise das Feld "Hergestellt in" als "KANADA" anzeigen?

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

Der obige Beispielcode wurde über erzeugt print_r(get_post_custom($post->ID));.

Ich schätze jede Einsicht, egal wie klein sie ist. :)

m-torin
quelle
1
Wenn Sie eine Frage ablehnen wollen, müssen Sie mindestens erwachsen genug sein, um zu sagen, warum. Ich versuche hart, PHP zu lernen. Dies mag für die meisten Programmierer eine grundlegende Sache sein, aber ich komme aus einem Design-Hintergrund.
m-torin

Antworten:

35

Verwenden Sie unserialize () , um es in ein Array zu konvertieren.

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

Bearbeiten - Zugehörige Gedanken - Beachten Sie beim Speichern von so serialisierten Metadaten, dass Sie die Möglichkeit einschränken, diese Daten in Abfragen zu verwenden, wenn dies für Sie von Belang ist. Beispielsweise ist es nicht so einfach, Abfragen wie "Alle in Kanada hergestellten Teile anzeigen" oder Ergebnisse nach Motor-ID zu ordnen, da diese Daten mit einer Reihe anderer Daten in einem Feld verstaut sind.

Milo
quelle
@ M.Taylor - bitte überprüfen Sie die von mir hinzugefügte Bearbeitung von serialisierten Daten und Abfragen, nicht sicher, ob es Sie betrifft, aber es könnte sein.
Milo
Sie legen großen Wert darauf, dass Sie nicht mehr in der Lage sind, die Daten zu durchsuchen. Ich muss untersuchen, wie man es nicht in einem serialisierten Array speichert, da ich das Skript nicht geschrieben habe.
m-torin
@ M.Taylor tut mir nicht leid. Ich bin mir sicher, dass jemand hier helfen kann.
Milo