How can I get the total number of rows in a CSV file with PHP?

后端 未结 10 905
后悔当初
后悔当初 2020-12-05 22:35

How can I get the total number of rows that are in a CSV file using PHP? I\'m using this method but can get it to work properly.

if (($fp = fopen(\"test.csv\         


        
相关标签:
10条回答
  • 2020-12-05 23:14
    $filename=$_FILES['sel_file']['tmp_name'];
    $file=fopen($filename,"r");
    $RowCount=0;
    
    while ((fgetcsv($file)) !== FALSE) 
    {
        $RowCount++;
    }
    
    echo $RowCount;
    fclose($file);
    
    0 讨论(0)
  • 2020-12-05 23:18

    CSV rows are separated by line breaks. Therefore, split the rows by line breaks, and you will get an array of rows, which is countable.

    if (($fp = fopen("test.csv", "r")) !== FALSE) { 
        $rows = explode("\n", $fp);
        $length = count($rows);
    
        echo $length;
    }
    
    0 讨论(0)
  • 2020-12-05 23:18

    count(file('filename.csv', FILE_SKIP_EMPTY_LINES));

    0 讨论(0)
  • 2020-12-05 23:23

    Here's another option using file() to read the entire file into an array, automatically parsing new lines etc:

    $fp = file('test.csv');
    echo count($fp);
    

    Also, since PHP5, you can pass in the FILE_SKIP_EMPTY_LINES... to skip empty lines, if you want to:

    $fp = file('test.csv', FILE_SKIP_EMPTY_LINES);
    

    Manual: http://php.net/manual/en/function.file.php

    0 讨论(0)
  • 2020-12-05 23:24

    I know this is an old post, but I've been googling this issue, and found that the only problem with the original code was that you need to define $row outside the while loop, like this:

    if (($fp = fopen("test.csv", "r")) !== FALSE) { 
    $row = 1;
      while (($record = fgetcsv($fp)) !== FALSE) {
          $row++;
      }
    

    Just in case it helps someone :) echo $row; }

    0 讨论(0)
  • 2020-12-05 23:26

    Create a new file reference using SplFileObject:

    $file = new SplFileObject('test.csv', 'r');
    

    Try to seek to the highest Int PHP can handle:

    $file->seek(PHP_INT_MAX);
    

    Then actually it will seek to the highest line it could in the file, there is your last line and the last line + 1 is equals to your total lines:

    echo $file->key() + 1;
    

    Tricky, but this will avoid you from loading the file contents into memory, which is a very cool thing to do when dealing with really large files.

    0 讨论(0)
提交回复
热议问题