Вы можете serialize
массив перед записью его в виде текста в файл. Затем вы можете прочитать данные обратно из файла, unserialize
превратит их обратно в массив.
http://php.net/manual/en/function.serialize.php
РЕДАКТИРОВАТЬ Описание процесса использования сериализации / десериализации:
Итак, у вас есть массив:
$arr = array(
'one'=>array(
'subdata1',
'subdata2'
),
'two'='12345'
);
Когда я вызываю serialize
для этого массива, я получаю строку:
$string = serialize($arr);
echo $string;
OUTPUT: a:2:{s:3:"one";a:2:{i:0;s:8:"subdata1";i:1;s:8:"subdata2";}s:3:"two";s:5:"12345";}
Итак, я хочу записать эти данные в файл:
$fn= "serialtest.txt";
$fh = fopen($fn, 'w');
fwrite($fh, $string);
fclose($fh);
Позже я хочу использовать этот массив. Итак, я прочитаю файл, затем произнесу сериализацию:
$str = file_get_contents('serialtest.txt');
$arr = unserialize($str);
print_r($arr);
OUTPUT: Array ( [one] => Array ( [0] => subdata1 [1] => subdata2 ) [two] => 12345 )
Надеюсь, это поможет!
РЕДАКТИРОВАТЬ 2 Вложенная демонстрация
Чтобы со временем хранить в этом файле больше массивов, вам нужно создать родительский массив. Этот массив является контейнером для всех данных, поэтому, если вы хотите добавить другой массив, вам нужно распаковать родительский объект и добавить к нему новые данные, а затем заново упаковать все.
Сначала настройте свой контейнер:
// Do this the first time, just to create the parent container
$parent = array();
$string = serialize($arr);
$fn= "logdata.log";
$fh = fopen($fn, 'w');
fwrite($fh, $string);
fclose($fh);
Теперь, когда вы захотите добавить новый массив, сначала вы должны получить весь пакет и десериализовать его:
// get out the parent container
$parent = unserialize(file_get_contents('logdata.log'));
// now add your new data
$parent[] = array(
'this'=>'is',
'a'=>'new',
'array'=>'for',
'the'=>'log'
);
// now pack it up again
$fh = fopen('logdata.log', 'w');
fwrite($fh, serialize($parent));
fclose($fh);