2014-03-14 98 views
0

我正在開發一個使用GBS的wordpress主題。 在數據庫中的字段值存儲這樣的:PHP序列化陣列

a:1:{i:0;s:7:"Virtual";} 

其中明確使用了序列化,但是當我保存一個meta值,並使用PHP的序列化,我得到這樣的:

s:24:"a:1:{i:0;s:7:"Virtual";}"; 

有什麼辦法沒有得到整個數組的字符串數? 下面是我使用的代碼:

update_post_meta($post_id, 'location', serialize(array('Virtual'))); 

回答

1

看起來它是雙系列化,意味着update_post_meta序列化,它已經。嘗試沒有您的顯式調用序列:

update_post_meta($post_id, 'location', array('Virtual')); 
+0

是啊,我只是做遲鈍我想,現在工作得很好。 謝謝! – user3417863

0

update_post_meta似乎序列化無論你送(序列化數組的字符串,就在這個時候)。你是否試圖改變他們的參數只是數組('虛擬'); ??

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;