【发布时间】:2020-06-27 18:05:57
【问题描述】:
我正在使用 update_post_meta 将数组的值保存在数据库中,
$array_of_something = [['daysOfWeek' => [1],
'startTime' => '09:00',
'endTime' => '10:00'], [
'daysOfWeek' => [2],
'startTime' => '09:00',
'endTime' => '10:00'], [
'daysOfWeek' => [3],
'startTime' => '09:00',
'endTime' => '10:00'], [
'daysOfWeek' => [4],
'startTime' => '09:00',
'endTime' => '10:00'], [
'daysOfWeek' => [1],
'startTime' => '11:00',
'endTime' => '12:00'], [
'daysOfWeek' => [3],
'startTime' => '11:00',
'endTime' => '12:00']];
update_post_meta($post_id, 'my_meta_of_the_post', $array_of_something);
基于codex的文档:
传入的数组会被序列化成字符串
但数据会保存到数据库中,例如:
数组数组数组数组数组数组
当我获取数据时使用
get_post_meta($post_id, 'my_meta_of_the_post', true);
我会得到:
数组数组数组数组数组数组
但我希望值得到序列化并保存在数据库中,有趣的是,如果我用它做精确的操作
$array_of_something = [[['a'=>['value_aa','value_ab'],'b'=>'value_of_b']],[['c'=>['value_ca','value_cb'],'d'=>'value_of_d']]];
值被序列化并正确保存在数据库中。
如果我在使用 update_post_meta 保存之前序列化$array_of_something,则值在数据库中被双重序列化,我在调用get_post_meta 时必须使用反序列化两次,当我取回它时,第一个反序列化工作正常,但第二个有值周围有一个<p> ... </P> 标记,该值是可以的,但因为
标记不会取消序列化并返回 false
【问题讨论】: