数组中的多个复选框值在数据库中给出奇怪的字符

问题描述 投票:0回答:1

我将值从数组中的复选框保存到数据库,但在数据库中,该字段包含奇怪的字符,如: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组

我希望有人可以帮助我!

谢谢。

php arrays database wordpress
1个回答
0
投票

这应该做的伎俩:

$data = join(', ', $_POST['wmw_age']);

您不必序列化数组,它可以与join函数连接,通过将所有值与给定字符串(胶水)连接,将其转换为字符串。 (上例中的', '

结果将是:0-4岁,如果选中两个复选框,则为第10组;如果仅选中一个复选框,则为第10组或0-4岁;如果未选中,则为空字符串。

感谢@RiggsFolly指出,序列化字符串由update_post_meta再次序列化,因此不需要反序列化。

© www.soinside.com 2019 - 2024. All rights reserved.