我将值从数组中的复选框保存到数据库,但在数据库中,该字段包含奇怪的字符,如:s:44:“a:2:{i:0; s:8:”0-4岁“; i:1; s:8:”第10组“;}”;
我只需要0-4岁和第10组的部分。如何防止角色按照我想要的方式获得?
这是表格的一部分:
<input type="checkbox" name="wmw_age[]" value="0-4 years">
<input type="checkbox" name="wmw_age[]" value="10th group">
这是我在提交后将其送到数据库的方式:
$data=serialize($_POST['wmw_age']);
update_post_meta($post_id, 'wmw_age', $data);
如果选中这两个字段,则这是数据库中的结果:
s:44:"a:2:{i:0;s:8:"0-4 years";i:1;s:8:"10th group";}";
是否有可能只在数据库中得到这个:0-4岁,第10组
我希望有人可以帮助我!
谢谢。
这应该做的伎俩:
$data = join(', ', $_POST['wmw_age']);
您不必序列化数组,它可以与join
函数连接,通过将所有值与给定字符串(胶水)连接,将其转换为字符串。 (上例中的', '
)
结果将是:0-4岁,如果选中两个复选框,则为第10组;如果仅选中一个复选框,则为第10组或0-4岁;如果未选中,则为空字符串。
感谢@RiggsFolly指出,序列化字符串由update_post_meta再次序列化,因此不需要反序列化。