如何将数组存储到文件中以便稍后用PHP访问数组?
我只想快速存储从远程API获取的数组,以便在本地主机上处理它。
所以:
- 我目前有一个数组。
- 我想让人们使用这个数组而不必从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));