Come estrarre i dati da un array post meta serializzato?


23

Ho trovato uno script di decodifica da XML a WP che memorizza i dati come un array in un meta campo personalizzato. Qual è il modo migliore per estrarre le informazioni?

Ad esempio, come posso visualizzare il campo "Prodotto in" come "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";}} )

Il codice di esempio sopra è stato prodotto tramite print_r(get_post_custom($post->ID));.

Apprezzo davvero qualsiasi intuizione, non importa quanto piccola. :)


1
Se hai intenzione di votare una domanda, almeno sii abbastanza adulto da dire perché. Sto cercando di imparare php. Questo può essere una cosa di base per la maggior parte dei programmatori, ma vengo da un background di progettazione.
m-torin,

Risposte:


35

Utilizzare unserialize () per convertirlo in un 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];

Modifica - Pensiero correlato - qualcosa da tenere a mente quando si memorizzano metadati serializzati in questo modo è che si limita la capacità di utilizzare tali dati nelle query, se questo è un problema per te. ad esempio, non è così facile scrivere query come "mostrami tutte le parti prodotte in Canada" o ordinare i risultati in base all'ID del motore, dal momento che quei dati sono nascosti con un mucchio di altri dati in un campo.


@Maylor - prego, controlla la modifica che ho aggiunto su dati serializzati e domande, non sono sicuro che sia un problema per te, ma potrebbe esserlo.
Milo,

È importante sottolineare la perdita della capacità di cercare i dati. Dovrò esaminare come non memorizzarlo in un array serializzato, dato che non ho scritto lo script.
m-torin,

@ M.Taylor Non mi dispiace. Sono sicuro che qualcuno qui può essere d'aiuto.
Milo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.