只是想计算文件夹中所有文件的总行数。以下 php 函数可帮助我仅计算特定文件的行数。只是想知道从文件夹中控制总行数的方法是什么。
$lines = COUNT(FILE($file));
谢谢。!
只是想计算文件夹中所有文件的总行数。以下 php 函数可帮助我仅计算特定文件的行数。只是想知道从文件夹中控制总行数的方法是什么。
$lines = COUNT(FILE($file));
谢谢。!
您可以迭代目录并计算每个文件并将它们全部汇总。而且您正在使用file()
函数,它将整个内容加载到内存中,如果文件非常大,您的 php 脚本将达到配置的内存限制。
如果您可以使用外部命令,则可以使用一行来解决。(如果您使用的是 Windows,请忽略它。)
$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);
?>
查看 DirectoryIterator 的标准 PHP 库(又名 SPL):
$dir = new DirectoryIterator('/path/to/dir');
foreach($dir as $file ){
$x += (isImage($file)) ? 1 : 0;
}
(仅供参考,有一个名为 iterator_count() 的未记录函数,但我想现在最好不要依赖它。而且你需要过滤掉看不见的东西,比如 . 和 .. 无论如何。)
或试试这个:--
见网址:- 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);
也可以看看
与上面的相同(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");