2009-11-01 39 views
5

如果我有一个序列化数组...我怎样才能追加更多的值?我应该先反序列化它 - >添加数据,然后再次序列化它?PHP如何将数据追加到序列化数组中

+1

很明显,序列化是最好的方法。但是,如果你有一个巨大的序列化数组,反复重复这个过程将是非常低效的。阵列是否需要首先序列化? – BraedenP 2009-11-01 22:40:35

回答

14

是的。

function addItem($serializedArray, $item) 
{ 
    $a = unserialize($serializedArray); 
    $a[] = $item; 
    return serialize($a); 
} 
+0

如果他要使用一个函数,那么通过引用传递$ serializedArray可能会更有效率,并让它直接将新项添加到引用数组中,而不是返回新值并再次设置它。 – BraedenP 2009-11-01 22:57:26

+0

@BraedenP。听起来这可能是一个很好的改进。我想我还需要多一点时间来命名函数及其变量。 – 2009-11-01 23:01:20

3

反串行化是绝对要走的路。除非你有一个巨大的字符串,否则会强烈建议,除非你想自己制作严格的解释器。

从串行化数组/对象中更改任何内容都应该非常小心 - 如果不更新定义每个结构的所有前面的数字,单个额外字符将会破坏所有内容!

0

是的,这是唯一的(可靠的)方式