文件默认是有一定的数据在里面的 开始保存的是json 的数据
然后我首先要读取出来,改为数组放到变量里面。
然后根据条件判断 将数组的值修改一下,然后再转化成json数据保存在文件里面。
$QQandTel = array('303098888' => '13544778695', '404052887' => '1884567852', '324123227' => '1221235852', '567552887' => '18643567852');
$qq = ['303098888', '404052887', '324123227', '567552887'];
$file = fopen('data.txt', 'r');
$arr = json_decode(fread($file, filesize('data.txt')));
fclose($file);
if ($arr->saveTime == 0) {
$arr->saveNum = 0;
$arr->saveTime = time()+86400;
$arr->saveQQNum = $qq[$arr->saveNum];
$arr->saveTelNum = $QQandTel[$qq[$arr->saveNum]];
$file = fopen('data.txt', 'w');
fwrite($file,json_encode($arr));
fclose($file);
}else if($arr->saveTime!=0&&time()>$arr->saveTime&&date('w')==0){
$arr->saveNum = $arr->saveNum+1;
if ($arr->saveNum==count($QQandTel)){
$arr->saveNum=0;
}
$arr->saveTime = time()+86400;
$arr->saveQQNum = $qq[$arr->saveNum];
$arr->saveTelNum = $QQandTel[$qq[$arr->saveNum]];
$file = fopen('data.txt', 'w');
fwrite($file,json_encode($arr));
fclose($file);
}
var_dump($arr);
数组最初生成格式是
function CreateData()
{
// 数组以json格式存入文件保存数据格式
$arr=['saveTime'=>0,'saveQQNum'=>0,'saveTelNum'=>0,'saveNum'=>0];
$file=fopen('data.txt','w');
fwrite($file,json_encode($arr));
}
我想问的是:
1.由于我如果一开始打开读写权限的话,要么就是把数据全删了,导致
$arr = json_decode(fread($file, filesize('data.txt')));
文件长度为0
2.要么就是文件会继续往后添加数据。(我只想修改里面的一些数据而已)
3.所以我先打开 ,读取完毕后我又关闭了,到要写入的时候,我就打开权限,然后写入。
这样子会不会太繁琐,有没更好的方法。
打开,读取,截断,写入,关闭