PHP文件缓存
项目中要用到临时存储一个数组,于是想利用PHP的文件操作来临时存储数组。
步骤1:
首先需要创建一个文件用到PHP文件操作相关函数
(PHP 4, PHP 5, PHP 7)
fopen — 打开文件或者 URL
resource fopen ( string fmode [, bool useincludcontext ]] )
代码:
<?php
function create_file($file,$str)
{
$myfile=fopen($file,'w');
fputs($myfile,$str);
fclose($myfile);
return $myfile;
}
//文件创建,$file为文件地址(包括文件名称),$str是要写入的数据
步骤二:要存入数组信息,需要将数组序列化
(PHP 4, PHP 5, PHP 7)
serialize — 产生一个可存储的值的表示
string serialize ( mixed $value )
serialize() 返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。
这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。
代码:
<?php
$arr=array(
'a'=>'apple',
'b'=>array('ball','banana')
);
var_dump($arr);
$str=serialize($arr);
var_dump($str);
显示:
array (size=2)
'a' => string 'apple' (length=5)
'b' =>
array (size=2)
0 => string 'ball' (length=4)
1 => string 'banana' (length=6)
string 'a:2:{s:1:"a";s:5:"apple";s:1:"b";a:2:{i:0;s:4:"ball";i:1;s:6:"banana";}}' (length=72)
步骤三:将序列化后的字符串存入文本文件读取时需要用unserialize()反序列化还原数组
代码:
<?php
function create_file($file,$str) //创建文件函数
{
$myfile=fopen($file,'w');
fputs($myfile,$str);
fclose($myfile);
return $myfile;
}
$file="test.txt";
$arr=array(
'a'=>'apple',
'b'=>array(
'ball','banana'
)
);
$str= serialize($arr); //序列化数组
create_file($file,$str); //创建文件并且写入数据
$arr_str=file_get_contents ($file,'r+'); //以字符串形式读取文件
var_dump($arr_str);
$arr=unserialize($arr_str); //反序列化还原数组
var_dump($arr);
浏览器输出:
string 'a:2:{s:1:"a";s:5:"apple";s:1:"b";a:2:{i:0;s:4:"ball";i:1;s:6:"banana";}}' (length=72)
array (size=2)
'a' => string 'apple' (length=5)
'b' =>
array (size=2)
0 => string 'ball' (length=4)
1 => string 'banana' (length=6)