php如何序列化对象数组?

时间:2010-04-21 18:41:57

标签: php serialization arrays object-serialization

我有一个名为'Call'的小类,我需要将这些调用存储到一个平面文件中。我创建了另一个名为“CallStorage”的类,其中包含一个数组,我将这些调用放入其中。

我的问题是我想将这个数组存储到磁盘上,以便稍后再读回来并从该数组中获取调用。

我尝试使用serialize()和unserialize()实现这一点,但这些似乎有点奇怪,部分信息丢失。

这就是我正在做的事情:

//write array to disk
$filename = $path . 'calls-' . $today;
$serialized = serialize($this->array);
$fp = fopen($filename, 'a');
fwrite($fp, $serialized);
fclose($fp);

//read array from serialized file

$filename = $path . 'calls-' . $today;
if (file_exists($filename)) {
    $handle = fopen($filename, 'r');
    $contents = fread($handle, filesize($filename));
    fclose($handle);
    $unserialized = unserialize($contents);
    $this->setArray($unserialized);
}

有人能看出我做错了什么,或者是什么。我还试图序列化并编写包含普通字符串的数组。我没有设法让它工作..我有一个Java背景,所以我只是不明白为什么我不能只是将数组写入磁盘,如果它被序列化。 :)

1 个答案:

答案 0 :(得分:6)

首先,使用简写形式:

file_put_contents($filepath,serialize($var));

$var=unserialize(file_get_contents($filepath));

然后在每个阶段输出/调试以找出问题所在。