我想用PHP实现从一个按行存储的文件中读取一条数据,读取完之后删除掉这行数据,这样我下次再读取的时候就能读取到第二条数据了,因为我是用CLI调用PHP,所以没法使用全局变量来保存计数,所以就想到读完之后删掉,这样就不用游标了 请问怎么实现呢if(!is_array($list))
{
$j=0;
$f= fopen("D:\\list2.txt","r");
$line = fgets($f);
//此处填写删除此行数据的代码
fclose($f);
}

解决方案 »

  1.   

    计算这行有长 strlen,然后把文本前 strlen 替换为空。
    小文件可以这样做,大的就不行。
      

  2.   

    $fn = "list2.txt";
    $f= fopen($fn, "r");
    $line = fgets($f);
    ob_start();
    fpassthru($f);
    fclose($f);
    file_put_contents($fn, ob_get_clean() );echo $line;
      

  3.   


    <?php
    $f1=fopen('fff.txt','r');
    $tmp=tempnam("/tmp",'');//建立临时文件
    $f2=fopen($tmp,'w');
    $i=0;
    while(!feof($f1)){
    $line=fgets($f1);
    $i++;
    if($i==1){
    continue;
    }
    fputs($f2,$line);

    }
    fclose($f1);
    fclose($f2);
    rename($tmp,'fff.txt');
    ?>没有函数直接删除文件中的行,修改文件(删除、增加)标准的办法都是新建立文件,逐行进行拷贝,在拷贝中遇到需要修改的就进行修改
      

  4.   

    把数据生成一个数组, array.php包含它,每次读取第一个之后,立即 unset  再reset