php, как сериализировать массив объектов?

У меня есть маленький класс под названием 'Вызов', и я должен сохранить эти вызовы в плоский файл. Я сделал другой класс под названием 'CallStorage', который содержит массив, куда я поместил эти вызовы в.

Моя проблема состоит в том, что я хотел бы сохранить этот массив к диску, таким образом, я мог позже считать его назад и получить вызовы от того массива.

Я попытался достигнуть этого использования, сериализируют () и не сериализируют (), но они, кажется, действуют так или иначе странные, и часть информации теряется.

Это - то, что я делаю:

//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, таким образом, я просто не вижу, почему я не мог только записать массив в диск, если он сериализируется.:)

5
задан hequ 21 April 2010 в 18:41
поделиться

1 ответ

Во-первых, используйте сокращенные формы:

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

и

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

А затем выведите / отлаживайте на каждом этапе, чтобы найти причину проблемы.

6
ответ дан 14 December 2019 в 13:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: