PHP json保存和读取多个数组到文件


php json saving and reading multiple arrays to file

我试图一次保存多个php数组。从解析器函数得到的数组也是一次一个。我曾经把它们都保存在内存中,然后一次把它们写下来,像这样:

while($onearr = parser())
     $allarr[] = $onearr;
  ..
  ..
  fwrite($filename,json_encode($allarr));

但是这个逻辑并没有坚持多久。我的内存很快就用完了。我想把数组一次一个地写入同一个文件,一次一个地读取它们。这是我的writer函数:

function savearr($onearr) {        
    if($fp = fopen('arrFile.json','a+'))  {    
       $rc = fwrite($fp, json_encode($onearr));
       fclose($fp);
    }   
}

现在我无法找到读取这些数组的方法!有什么办法吗?我试着一次读取整个文件,但不确定如何将其正确解析为单个数组以匹配原始数组!

Thanks in advance

首先,您可能需要重新考虑您的savearr()函数,您每次写入数组时都会打开/关闭文件。也许一个类注释:这些都没有测试过:

class ArrayWriter {
  protected $fp;
  public function __construct() {
    $this->fp = fopen('arrFile.json', 'a+');
    if(!$this->fp) die("Unable to open file");
  }
  public function __destruct() {
    if($this->fp) fclose($this->fp);
  }
  public function write($array = array()) {
    if($this->fp) fwrite($this->fp, json_encode($array) . "'n");
  }
}

现在我们已经清除了这个,我们可以做相反的读取:

function read() {
  $arrays = file('arrFile.json');
  $result = array();
  foreach($arrays as $line)
    $result[] = json_decode($line);
  }
  return $result;
}