我正在开发一个使用GBS的wordpress主题。 在数据库字段中,值的存储方式如下:
a:1:{i:0;s:7:"Virtual";}
其中显然使用了序列化,但是当我存储元值并使用php来序列化时,我得到了这个:
s:24:"a:1:{i:0;s:7:"Virtual";}";
有没有办法不获取整个数组的字符串数? 这是我使用的代码:
update_post_meta( $post_id, 'location', serialize(array('Virtual')) );
答案 0 :(得分:1)
看起来它是双序列化的,这意味着update_post_meta已将其序列化。在没有显式调用序列化的情况下尝试:
update_post_meta( $post_id, 'location', array('Virtual'));
答案 1 :(得分:0)
update_post_meta似乎序列化您发送的任何内容(此时为序列化数组的字符串)。您是否尝试将thirs参数更改为array('Virtual'); ??
答案 2 :(得分:0)
您可以通过:
切片从数组的前两位开始爆炸,然后像这样内嵌回“:”
$str = 's:24:"a:1:{i:0;s:7:"Virtual";}";';
$expected = '"a:1:{i:0;s:7:"Virtual";}";';
$bitsOfSerial = explode(":", $str);
$noStringLengthBits = array_slice($bitsOfSerial, 2);
$actual = implode(":", $noStringLengthBits);
assert($expected === $actual);
echo $actual;