如何从后元序列化数组中提取数据?


23

我找到了XML到WP解码器脚本,该脚本将数据作为数组存储在自定义元字段中。提取信息的最佳方法是什么?

例如,如何将“制造地”字段显示为“加拿大”?

[_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));

无论有多细微的见解,我都非常感谢。:)


1
如果您要否决一个问题,至少要有足够的成年人来说为什么。我正在努力学习php。对于大多数程序员来说,这可能是一件基本的事情,但是我来自设计背景。
m-torin 2011年

Answers:


35

使用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订购结果并不容易,因为该数据与一堆其他数据一起存储了。


@ M.Taylor-不用客气,检查我添加的有关序列化数据和查询的编辑,不确定是否对您有问题,但可能是。
米洛

您失去了搜索数据的能力,这很重要。鉴于我没有编写脚本,因此我将不得不研究如何不将其存储在序列化数组中。
m-torin 2011年

@ M.Taylor我不知道,对不起。我敢肯定,这里有人可以帮忙。
米洛
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.