PHP遍历目录输出目录及其下的所有文件
1. 准备目录结构
在开始之前,需要准备一个目录结构,用于测试遍历目录的功能。假设在网站的根目录下准备一个名为 test
的目录,并在该目录下分别创建两个子目录 folder1
和 folder2
,并在这两个子目录下分别各创建一个文件。目录结构如下:
test/
|-- folder1/
| |-- file1.txt
|-- folder2/
| |-- file2.txt
2. 编写PHP代码
我们可以使用 opendir()
函数打开目录,然后使用 readdir()
函数遍历目录下的所有文件和子目录。代码示例如下:
<?php
$path = './test/';
function scan_dir($path) {
$dir_handle = opendir($path);
while ($item = readdir($dir_handle)) {
if ($item == '.' || $item == '..') {
continue;
}
$item_path = $path . '/' . $item;
if (is_file($item_path)) {
echo $item_path . "\n";
} elseif (is_dir($item_path)) {
echo $item_path . "\n";
scan_dir($item_path);
}
}
closedir($dir_handle);
}
scan_dir($path);
?>
这段代码首先打开了 ./test/
目录,然后使用 while
循环读取该目录下的所有文件和子目录。对于读取到的每一个文件或子目录,代码判断其是否为目录,若为目录,则通过递归的方式遍历目录及其所有子目录。
执行这段代码,将会输出以下内容:
./test/folder1
./test/folder1/file1.txt
./test/folder2
./test/folder2/file2.txt
3. 遍历目录并记录每个子目录下的文件数
下面是另一个示例,我们可以遍历目录并记录每个子目录下的文件数。实现方式类似于上一个示例,只是增加了子目录下文件数的统计。
<?php
$path = './test/';
function scan_dir($path) {
$dir_handle = opendir($path);
$count = 0;
while ($item = readdir($dir_handle)) {
if ($item == '.' || $item == '..') {
continue;
}
$item_path = $path . '/' . $item;
if (is_file($item_path)) {
$count++;
} elseif (is_dir($item_path)) {
$count += scan_dir($item_path);
}
}
closedir($dir_handle);
echo $path . ': ' . $count . "\n";
return $count;
}
scan_dir($path);
?>
这段代码首先打开了 ./test/
目录,然后使用 while
循环读取该目录下的所有文件和子目录。对于读取到的每一个文件或子目录,代码通过判断其是否为目录,来统计其下文件总数。当遍历到最底层的子目录时,函数将返回该子目录下文件数,从而让父目录的统计数加上该子目录的文件数。
执行这段代码,将会输出以下内容:
./test/: 4
./test/folder1: 1
./test/folder2: 1
以上是两个 PHP 遍历目录的示例,希望能解决你的问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php遍历目录输出目录及其下的所有文件示例 - Python技术站