php如何序列化对象数组?

标签 php serialization arrays object-serialization

我有一个名为“调用”的小类,我需要将这些调用存储到一个平面文件中。我制作了另一个名为“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 背景,所以我不明白为什么我不能在序列化的情况下将数组写入磁盘。 :)

最佳答案

首先,使用简写形式:

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

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

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

关于php如何序列化对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2685640/

相关文章:

php - 在 PHPmailer 中设置原始 IP

php - Laravel 5.2 Auth 总是重定向到登录页面(可能 session 不持久)

c++ - 如何使序列化并行运行

java - 这个语法有什么区别吗?

java - Java中的字符串数组排序

PHP 表单输入过滤

javascript - 如何将 PHP 对象序列化为 JavaScript 对象(不是 JSON)

c# - 如何将从 XSD 生成的类序列化为 XML

c# - 在哪些情况下我必须在 WPF 中序列化命令的对象?

等效于此数组的 c++ vector