PHP序列化数组

时间:2014-03-14 00:03:32

标签: php serialization

我正在开发一个使用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')) );

3 个答案:

答案 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;