Php 使用fgetcsv跳过行

Php 使用fgetcsv跳过行,php,row,fgetcsv,Php,Row,Fgetcsv,因此,我使用fopen加载一个csv文件,然后逐行遍历它,并将date、num和rec保存到它们的变量中。但是,因为我一遍又一遍地读同一个文件。我不希望反复存储旧数据。因此,我用$dbcnt获得db行数,然后我希望从该行开始 你有什么想法吗?我会用。它速度非常快,并且支持一个很好的基于线的搜索功能: public function loadCSV() { $file = fopen($this->path, 'r');

因此,我使用
fopen
加载一个csv文件,然后逐行遍历它,并将date、num和rec保存到它们的变量中。但是,因为我一遍又一遍地读同一个文件。我不希望反复存储旧数据。因此,我用
$dbcnt
获得db行数,然后我希望从该行开始

你有什么想法吗?

我会用。它速度非常快,并且支持一个很好的基于线的搜索功能:

 public function loadCSV()
 {

                $file  = fopen($this->path, 'r');
                $dbcnt = $this->getdbrows();


                while(!feof($file))
                {

                        if(fgetcsv($file)[$this->group] == '610')
                        {

                                $date   = fgetcsv($file)[$this->datePos];
                                $num    = $this->formatNum(fgetcsv($file)[$this->numPos]);
                                $rec    = fgetcsv($file)[$this->recPos];

                                if(!(in_array($num, $this->filter)))
                                {

                                        array_push($this->csvitem, $date . ';' . $num . ';' . $rec);

                                }
                        }

                }

        $this->writeCSV();

        }
公共函数loadCSV(){
$file=新的SplFileObject($this->path);
$dbcnt=$this->getdbrows();
$file->seek($dbcnt);//eof()){
$record=$file->fgetcsv();
如果($record[$this->group]==“610”){
等等

来自@ex3v的链接确实帮助了我

我所需要的
$dbcnt
中的一个部分就是一个if语句

public function loadCSV() {
    $file = new SplFileObject($this->path);
    $dbcnt = $this->getdbrows();
    $file->seek($dbcnt); // <---- here

    while (!$file->eof()) {
        $record = $file->fgetcsv();
        if ($record[$this->group] == '610') {
        .. and so on..

其中,
$line
是fgetcsv的每次恢复的计数器

如果有人从您的文件中删除旧行,会发生什么?不会发生这种情况。请查看此线程:此时您仍在读取整个文件。您不会“从该行开始”,你从那一排继续读到那一点。结果:你一无所获。
if($dbcnt >= $line)
{

}