我有一些PHP数组保存在.log文件中
我想把它们读入一个PHP数组,如
array [0] = .log文件中的第一个数组
array1 = .log文件中的第二个数组
它不会提供这样的文件或目录错误,但当我做include_once(‘file.log’)文件中的内容显示为输出(我不知道为什么)请帮助
在将文本写入文件之前,可以序列化数组.然后,您可以从文件中读取数据,unserialize将其重新转换为数组.
http://php.net/manual/en/function.serialize.php
编辑描述使用serialize / unserialize的过程:
所以你有一个数组:
$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);
后来我想使用那个数组.所以,我会读取文件,然后unserialize:
$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,$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',serialize($parent)); fclose($fh);