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", "r")) !== FALSE) { while (($record = fgetcsv($fp)) !== FALSE) { $row++; } echo $row; }
Using len() function Under this method, we need to read the CSV file using pandas library and then use the len() function with the imported CSV file, which will return an int value of a number of lines/rows present in the CSV file.
If I understand, you simply need count($line) , because fgetcsv() has returned an array representing one row from the CSV file. The array's count() is therefore the number of source columns.
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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With