本文将介绍和演示PHP统计目录文件数的几种方法。
在 PHP 中使用 FilesystemIterator 类来计算目录中的文件数
PHP 提供了 FilesystemIterator
类,这是一种计算目录中文件的优雅方法。 该类包含许多函数和常量,它们执行用于迭代文件系统的各种操作。
使用 iterator_count()
函数计算迭代器中元素的数量。
让我们考虑以下目录结构。
myDir
├── abc.html
├── abc.jpeg
├── abc.php
└── abc.png
首先,创建一个变量 $iterator 并存储 FilesystemIterator()
的一个实例。 将第一个参数设置为 __DIR__
并使用 FilesystemIterator::SKIP_DOTS
作为构造函数中的第二个参数。
__DIR__
表示脚本所在的当前目录,第二个参数是一个标志,表示跳过。 和 ..
存在于目录中。 $iterator 变量包含当前目录的文件系统迭代器。
可以迭代它以获取文件名、文件数等信息。
接下来,使用 iterator_count()
函数打印目录中 $iterator 的数量。
示例代码:
$iterator = new FilesystemIterator(__DIR__, FilesystemIterator::SKIP_DOTS);
echo "There are ". iterator_count($iterator). " files in the directory";
输出结果如下:
There are 4 files in the directory
因此,我们可以使用 FilesystemIterator()
类来统计目录中的文件数。
在 PHP 中使用 glob() 和 count() 函数计算目录中的文件数
我们可以使用 glob()
和 count()
函数来获取目录中的文件数。 glob()
函数给出与指定模式匹配的文件和文件夹的数组。
我们可以使用 * 获取目录内的所有文件。 接下来,我们可以使用 count()
函数来获取该数组中元素的数量。
例如创建一个 $path 变量,存储要统计文件的目录的准确路径。 接下来,对 $path 变量使用 glob()
函数并将该变量与 /*
连接起来。
结果,创建了 myDir 中所有文件的数组。 最后,对 glob()
函数的结果使用 count()
函数。
这样就可以查到myDir目录下的文件个数。 下面的代码示例表示第一个示例中使用的文件结构。
示例代码:
$path =$_SERVER['DOCUMENT_ROOT']."/myDir";
$num = count(glob($path . "/*"));
echo $num;
输出结果如下:
4
使用 scandir() 和 count() 函数计算 PHP 目录中的文件数
此方法与第二种方法类似。 这里唯一的区别是我们使用 scandir()
函数而不是 glob()
函数。
我们可以将目录路径作为参数提供给 scandir() 函数。 该函数返回一个包含目录内所有内容的数组,包括 .
和 ...
接下来,我们可以使用 count()
函数来获取目录中内容的数量。 最后,重要的部分是将 count()
函数的结果减去 2,以去除 .
和 ...
的计数。
因此,我们可以获得目录中文件的确切数量。
示例代码:
$path =$_SERVER['DOCUMENT_ROOT']."/myDir";
$num = count(scandir($path))-2;
echo "there are $num files in the directory";
输出结果如下:
there are 4 files in the directory