Come estrarre dati da un array serializzato nei meta post?

27 mag 2011, 17:21:47
Visualizzazioni: 62.5K
Voti: 34

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

Per esempio, come potrei visualizzare il campo "Manufactured 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 molto qualsiasi suggerimento, per quanto piccolo. :)

1
Commenti

Se hai intenzione di votare negativamente una domanda, almeno sii abbastanza maturo da spiegare il perché. Sto facendo del mio meglio per imparare PHP. Potrebbe essere una cosa basilare per la maggior parte dei programmatori, ma io provengo da un background di design.

MTT MTT
27 mag 2011 19:59:08
Tutte le risposte alla domanda 2
3
50

Utilizza 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 - Considerazione correlata: una cosa da tenere a mente quando si memorizzano metadati serializzati in questo modo è che si limita la capacità di utilizzare quei dati nelle query, se questo è un aspetto che ti interessa. Ad esempio, non è così semplice scrivere query come "mostrami tutti i pezzi fabbricati in Canada", oppure ordinare i risultati per ID motore, poiché quei dati sono nascosti insieme ad altri dati in un unico campo.

27 mag 2011 17:34:46
Commenti

@M.Taylor - prego, controlla la modifica che ho aggiunto riguardo ai dati serializzati e alle query, non sono sicuro che sia un problema per te, ma potrebbe esserlo.

Milo Milo
27 mag 2011 17:54:21

Fai un'ottima osservazione riguardo alla perdita della capacità di cercare i dati. Dovrò verificare come non memorizzarli in un array serializzato, considerando che non ho scritto lo script.

MTT MTT
27 mag 2011 18:07:50

@M.Taylor Non lo so, mi dispiace. Sono certo che qualcuno qui potrà aiutarti però.

Milo Milo
27 mag 2011 18:32:33
0

Puoi utilizzare questo codice WordPress che converte in un array.

maybe_unserialize($data);

https://developer.wordpress.org/reference/functions/maybe_unserialize/

19 gen 2021 14:20:20