反序列化两个数组


Unserialize two arrays

我已经序列化了两个数组。

a:2:{s:4:"name";s:3:"foo";s:8:"passwort";s:3:"bar";}a:2:{s:4:"name";s:3:"bar";s:8:"passwort";s:3:"foo";}

现在我想反序列化它们。(它们保存在$file)

$db=unserialize( file_get_contents($file) );
print_r($db);

输出:

Array ( [name] => foo [passwort] => bar )

所以只打印了第一个...如何将两者捆绑在一个阵列中?

提前致谢

M00LTi

当您将

序列化数组附加到已序列化的数组时,您已经厌倦了序列化格式。序列化变量应仅映射到一个变量。如果要将两个数组序列化为一个结构,请序列化包含这两个数组的数组:

serialize(array($arr1, $arr2))

然后,您可以反序列化两者:list($arr1, $arr2) = unserialize($data) ,或者通过执行$arrays = unserialize($data)然后访问 $arrays[0]$arrays[1]

如果要修复已失效的格式,则必须自行提取两个部分并在每个部分上调用unserialize()。如果您非常了解您的数据,那么这次可以手动执行此操作,或者为序列化格式实现一个小解析器以发现上一个条目何时结束,并且可以开始序列化新条目(通过扫描字符串外部的 }a)。