Intereting Posts
PHP-функция для построения строки запроса из массива Как настроить ffmpeg для сервера CentOS версии 6.5 Запланированный запрос на мой сайт от внешнего источника запрос geoip zip code Добавление нескольких маркеров на Картах Google из базы данных MySQL Имеет ли PHP бесплатные локальные переменные сразу после завершения функции? Foreach с многомерным массивом – Laravel Blade templating установка обложки альбома mp3 с php mysql_query () возвращает true, но mysql_num_rows () и mysql_fetch_array () дают "недействительные ошибки ресурса Как получить более одного данных в электронной почте? Слияние двух изображений PNG с библиотекой PHP GD Symfony 2 присоединяется к неработающей доктрине JQuery / AJAX: загрузка внешних DIV с использованием динамического содержимого PHP 5: как написать двоичные данные utf-8 – изображение – выводить? cakephp 2 – разбиение на страницы за пределами первой страницы не работает

Как получить общее количество строк в CSV-файле с помощью PHP?

Как я могу получить общее количество строк, которые находятся в файле CSV, используя PHP? Я использую этот метод, но могу заставить его работать правильно.

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

Вот еще один вариант использования file() для чтения всего файла в массив, автоматического разбора новых строк и т. Д .:

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

Кроме того, начиная с PHP5, вы можете передать FILE_SKIP_EMPTY_LINES …, чтобы пропустить пустые строки, если вы хотите:

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

Руководство: http://php.net/manual/en/function.file.php

Пытаться

 $c =0; $fp = fopen("test.csv","r"); if($fp){ while(!feof($fp)){ $content = fgets($fp); if($content) $c++; } } fclose($fp); echo $c; в $c =0; $fp = fopen("test.csv","r"); if($fp){ while(!feof($fp)){ $content = fgets($fp); if($content) $c++; } } fclose($fp); echo $c; 

Создайте ссылку на новый файл с помощью SplFileObject :

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

Попытайтесь seek самый высокий Int PHP, который может обрабатывать:

 $file->seek(PHP_INT_MAX); 

Тогда на самом деле он будет искать самую высокую строку в файле, есть последняя строка, а последняя строка + 1 равна вашим общим строкам:

 echo $file->key() + 1; 

Трудно, но это позволит вам не загружать содержимое файла в память, что очень приятно делать при работе с действительно большими файлами.

Я знаю, что это довольно старый, но на самом деле я столкнулся с тем же вопросом. В качестве решения я бы предположил использовать специфическую для Linux логику:

 $rows = shell_exec('$(/bin/which cat) file.csv | $(/bin/which tr) "\r" "\n" | $(which wc) -l'); 

ПРИМЕЧАНИЕ: это работает только для Linux, и это нужно использовать, только если вы на 100% уверены, что в вашем файле нет многострочных ячеек

Строки CSV разделяются разрывами строк. Поэтому разделите строки на разрывы строк, и вы получите массив строк, который является счетным.

 if (($fp = fopen("test.csv", "r")) !== FALSE) { $rows = explode("\n", $fp); $length = count($rows); echo $length; } 

Я знаю, что это старый пост, но я искал эту проблему и обнаружил, что единственная проблема с исходным кодом заключалась в том, что вам нужно определить $row вне цикла while , например:

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

На всякий случай это помогает кому-то 🙂 echo $ row; }

 $filename=$_FILES['sel_file']['tmp_name']; $file=fopen($filename,"r"); $RowCount=0; while ((fgetcsv($file)) !== FALSE) { $RowCount++; } echo $RowCount; fclose($file); 

count (файл ('filename.csv', FILE_SKIP_EMPTY_LINES));

Если вы получаете файл из формы

 $file = $_FILES['csv']['tmp_name']; $fp = new SplFileObject($file, 'r'); $fp->seek(PHP_INT_MAX); echo $fp->key() + 1; $fp->rewind(); 

Работает как шарм !!!!!!!!!!!!!!!!!!