Intereting Posts
PHP: как отсортировать значения массива в алфавитном порядке? превышено максимальное время выполнения программы phpseclib Пользовательские поля пользовательского ввода Woocommerce Расширенная фильтрация коллекции связанных лиц в Symfony Загрузка файла Jquery всегда завершается неудачей, когда загрузка файла отменена Вызов функции-члена на не-объекте – работает localhost, но не в сети Неверный номер страницы в функции setPage (): 0 Как я могу использовать несколько типов содержимого заголовков PHP на одной странице? Это возможно? MySQL Выбор столбца до номера загружать изображения спереди Есть ли способ проверить, является ли cookie httponly в PHP PHP MYSQL: способ отображения таблицы в порядке возрастания Как пройти SimpleXML для редактирования текстовых узлов? «Пароль не принимается с сервера: 535 Неверные данные аутентификации» при отправке с помощью GMail и phpMailer Выполнять пакетный скрипт с правами администратора в Windows 8.1 с помощью exec ()

Всего строк PHP_Count во всех файлах в данной папке

Просто хотел подсчитать общее количество строк из всех файлов из папки. следующая функция php помогает мне подсчитать число строк только для определенного файла. просто интересно, каков путь к общему количеству строк из папки.

$lines = COUNT(FILE($file)); 

Спасибо.!

То же, что и выше (ответ salathe), за исключением того, что он печатает количество строк (теперь в php7), а не пучок сообщений об ошибках.

 $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(__DIR__)); $lines = 0; foreach ($files as $fileinfo) { if (!$fileinfo->isFile()) { continue; } $read = $fileinfo->openFile(); $read->setFlags(SplFileObject::READ_AHEAD); $lines += iterator_count($read) - 1; // -1 gives the same number as "wc -l" } echo ("Found :$lines"); 

Вы можете перебирать каталог и подсчитывать каждый файл и суммировать их все. И вы используете функцию file() , которая будет загружать весь контент в память, если файл очень большой, ваш php-скрипт достигнет предела памяти вашей конфигурации.

Если вы можете использовать внешнюю команду, есть решение с одной строкой. (Если вы используете окна, просто опустите его.)

 $total = system("find $dir_path -type f -exec wc -l {} \; | awk '{total += $1} END{print total}'"); 

Что-то вроде этого возможно:

 <?php $line_count = 0; if ($handle = opendir('some/dir/path')) { while (false !== ($entry = readdir($handle))) { if (is_file($entry)) { $line_count += count(file($entry)); } } closedir($handle); } var_dump($line_count); ?> 

Проверьте стандартную библиотеку PHP (она же SPL) для DirectoryIterator:

 $dir = new DirectoryIterator('/path/to/dir'); foreach($dir as $file ){ $x += (isImage($file)) ? 1 : 0; } 

(FYI есть недокументированная функция, называемая iterator_count (), но, вероятно, лучше не полагаться на нее, пока я себе представляю. И вам нужно будет отфильтровать невидимые вещи, как и все равно.)

или попробуйте следующее:

см. url: – http://www.brightcherry.co.uk/scribbles/php-count-files-in-a-directory/

 $directory = "../images/team/harry/"; if (glob($directory . "*.jpg") != false) { $filecount = count(glob($directory . "*.jpg")); echo $filecount; } else { echo 0; } 

Очень простой пример подсчета строк может выглядеть примерно так: это дает те же цифры, что и ответ xdazz .

 <?php $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(__DIR__)); $lines = $files = 0; foreach ($files as $fileinfo) { if (!$fileinfo->isFile()) { continue; } $files++; $read = $fileinfo->openFile(); $read->setFlags(SplFileObject::READ_AHEAD); $lines += iterator_count($read) - 1; // -1 gives the same number as "wc -l" } printf("Found %d lines in %d files.", $lines, $files); 

Смотрите также

  • RecursiveDirectoryIterator
  • SplFileInfo
  • SplFileObject
  • RecursiveIteratorIterator
  • iterator_count()