我已经序列化了两个数组。
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)。