问题描述

我发现一个 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。