Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP_统计给定文件夹下所有文件中的总行数_Php - Fatal编程技术网

PHP_统计给定文件夹下所有文件中的总行数

PHP_统计给定文件夹下所有文件中的总行数,php,Php,只想计算文件夹中所有文件的行总数。下面的php函数帮助我只计算特定文件的行数。只是想知道如何控制文件夹中的行总数 $lines = COUNT(FILE($file)); 谢谢 可能是这样的: <?php $line_count = 0; if ($handle = opendir('some/dir/path')) { while (false !== ($entry = readdir($handle))) { if (is_file($entry))

只想计算文件夹中所有文件的行总数。下面的php函数帮助我只计算特定文件的行数。只是想知道如何控制文件夹中的行总数

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

谢谢

可能是这样的:

<?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);

?>

您可以迭代该目录,对每个文件进行计数,然后将它们相加。您使用的是
file()
函数,它会将整个内容加载到内存中,如果文件非常大,您的php脚本将达到配置文件的内存限制

如果您可以使用外部命令,那么有一个解决方案只有一行。(如果您使用的是windows,请忽略它。)


查看DirectoryIterator的标准PHP库(又名SPL):

$dir = new DirectoryIterator('/path/to/dir');
foreach($dir as $file ){
  $x += (isImage($file)) ? 1 : 0;
}
(仅供参考,有一个名为iterator_count()的未记录函数,但我想现在最好不要依赖它。而且您需要过滤掉一些看不见的东西,比如。和..)

或者尝试以下方法:-

请参阅网址:-


计算行数的一个非常基本的示例可能如下所示,给出的数字与

与上面的一个相同(萨拉特的答案),除了这个打印行数(现在是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");

如果你想数一数桌子上书的页数,你会怎么做?在这里描述算法。然后将“桌面”替换为“文件夹”,将“书本”替换为“文件”,将“页面”替换为“行”。很可能您没有检查
$entry
是否为文件。在这种情况下,您不需要检查它是
还是
至少是用英语记录的。
$directory = "../images/team/harry/";
if (glob($directory . "*.jpg") != false)
{
 $filecount = count(glob($directory . "*.jpg"));
 echo $filecount;
}
else
{
 echo 0;
}
<?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);
$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");