关于文件读写问题

文件默认是有一定的数据在里面的 开始保存的是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.所以我先打开 ,读取完毕后我又关闭了,到要写入的时候,我就打开权限,然后写入。
这样子会不会太繁琐,有没更好的方法。

阅读 2.2k
1 个回答

打开,读取,截断,写入,关闭

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题