如何将数组存储到文件中以便稍后用PHP访问数组?

我只想快速存储从远程API获取的数组,以便在本地主机上处理它。

所以:

  1. 我目前有一个数组。
  2. 我想让人们使用这个数组而不必从API中获取它。

这里没有效率等方面的要求,这只是一个实际的网站只是为了得到一些消毒/格式化方法等

有没有像store_array()restore_arrray()函数?

最好的方法是JSON序列化。 这是人类可读的,你会得到更好的性能(文件更小,更快,加载/保存)。 代码非常简单。 只有两个function

  • json_encode
  • json_decode

示例代码:

 $arr1 = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); file_put_contents("array.json",json_encode($arr1)); # array.json => {"a":1,"b":2,"c":3,"d":4,"e":5} $arr2 = json_decode(file_get_contents('array.json'), true); $arr1 === $arr2 # => true 

用这个例子你可以很容易地编写你自己的store_array和restore_array函数。

为了速度比较,请参阅基准首先从首选方法存储PHP数组(json_encode与序列化) 。

如果你不需要转储文件是可读的,你可以serialize()数组。

存储:

 file_put_contents('yourfile.bin', serialize($array)); 

检索:

 $array = unserialize(file_get_contents('yourfile.bin')); 

使用序列化和反序列化

 // storing $file = '/tmp/out.data'; file_put_contents($file, serialize($mydata)); // $mydata is the response from your remote API // retreiving $var = unserialize(file_get_contents($file)); 

或者另一个,哈克的方式:

var_export()完全符合你的要求,它将采取任何forms的variables,并将其存储在PHPparsing器可以读回的表示中。 您可以将它与file_put_contents结合使用,将其存储在磁盘上,然后使用file_get_contents和eval将其读回。

 // storing $file = '/tmp/out.php'; file_put_contents($file, var_export($var, true)); // retrieving eval('$myvar = ' . file_get_contents($file) . ';'); 

你可以使用serialize把它变成一个string写入文件,并伴随unserialize将其返回给一个数组结构。

我build议使用独立于语言的结构,比如JSON。 这将允许您使用不同于PHP的语言加载文件,以防稍后有机会。 json_encode来存储它和json_decode ($str, true)来返回它。

使用PHP的serialze:

 file_put_contents("myFile",serialize($myArray));