Bagaimana cara mengekstrak data dari array meta pos berseri?

23

Saya menemukan skrip dekoder XML ke WP yang menyimpan data sebagai array di bidang meta khusus. Apa cara terbaik untuk mengekstrak informasi?

Misalnya bagaimana saya bisa menampilkan bidang "Dibuat di" sebagai "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";}} )

Contoh kode di atas diproduksi melalui print_r(get_post_custom($post->ID));.

Saya sangat menghargai wawasan apa pun, sekecil apa pun. :)

m-torin
sumber
1
Jika Anda akan memilih pertanyaan setidaknya menjadi cukup dewasa untuk mengatakan mengapa. Saya berusaha keras untuk belajar php. Ini mungkin hal dasar bagi kebanyakan programmer tapi saya datang dari latar belakang desain.
m-torin

Jawaban:

35

Gunakan unserialize () untuk mengubahnya menjadi 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];

Sunting - Pemikiran terkait - sesuatu yang perlu diingat ketika menyimpan meta data bersambung seperti ini adalah Anda membatasi kemampuan Anda untuk menggunakan data itu dalam kueri, jika itu menjadi perhatian Anda. misalnya, tidak mudah untuk menulis kueri seperti "tunjukkan semua bagian yang diproduksi di Kanada", atau pesan hasil dengan id mesin, karena data tersebut tersimpan dengan banyak data lain dalam satu bidang.

Milo
sumber
@ M.Taylor - sama-sama, periksa hasil edit yang saya tambahkan tentang data dan pertanyaan berseri, tidak yakin itu masalah bagi Anda, tapi mungkin saja.
Milo
Anda membuat poin bagus tentang kehilangan kemampuan untuk mencari data. Saya harus melihat bagaimana tidak menyimpannya dalam array serial, mengingat saya tidak menulis skrip.
m-torin
@ M.Taylor saya tidak, maaf. Saya yakin seseorang di sini dapat membantu.
Milo