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