php遍历目录输出目录及其下的所有文件示例

在开始之前,需要准备一个目录结构,用于测试遍历目录的功能。假设在网站的根目录下准备一个名为 test 的目录,并在该目录下分别创建两个子目录 folder1 和 folder2,并在这两个子目录下分别各创建一个文件。目录结构如下:

PHP遍历目录输出目录及其下的所有文件

1. 准备目录结构

在开始之前,需要准备一个目录结构,用于测试遍历目录的功能。假设在网站的根目录下准备一个名为 test 的目录,并在该目录下分别创建两个子目录 folder1folder2,并在这两个子目录下分别各创建一个文件。目录结构如下:

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遍历目录输出目录及其下的所有文件示例

基础教程推荐