問題描述

我發現一個 XML 到 WP 解碼器腳本,將數據作為數組存儲在自定義元字段中。提取信息的最佳方法是什麼?

例如,如何將”Manufactured in” 字段顯示為”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";}} )

以上示例代碼是通過 print_r(get_post_custom($post->ID)); 生成的。

我非常感謝任何見解,無論多麼小。 🙂

最佳解決方案

使用 unserialize()將其轉換為數組。

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

編輯相關的想法 – 當存儲像這樣的序列化的元數據時,要記住的是,您限制了在查詢中使用該數據的能力,如果這是您所關心的問題。例如,編寫諸如 「顯示加拿大製造的所有零件」 等查詢或者通過引擎 ID 排序結果並不容易,因為該數據在一個字段中被一堆其他數據所包圍。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。