php循环获取目录以及所有子目录中的所有文件

 
更多

1. php 循环获取目录以及所有子目录中的所有文件,结果是一个多维数组。

/**
 * 循环获取目录以及所有子目录中的所有文件,结果是一个多维数组
 * @param string $dir
 * @return array
 * @author www.phpernote.com
 */
function listDir($dir) {
    $files = [];

    if (!is_dir($dir)) {
        return $files;
    }

    foreach (scandir($dir) as &$file_name) {
        if ($file_name == '.' || $file_name == '..') {
            continue;
        }

        $file_abs_path = $dir . DIRECTORY_SEPARATOR . $file_name;

        $files[$file_name] = [
            'file_name' => $file_name,
            'abs_path' => $dir,//绝对地址
            'is_dir' => is_dir($file_abs_path) ? 1 : 0,
            'ext' => pathinfo($file_abs_path, PATHINFO_EXTENSION)
        ];

        $files[$file_name]['is_dir'] && $files[$file_name]['son'] = listDir($file_abs_path);
    }

    return $files;
}

返回结果示例:

Array
(
    [1] => Array
        (
            [file_name] => 1
            [abs_path] => /var/www/test
            [is_dir] => 1
            [son] => Array
                (
                    [2] => Array
                        (
                            [file_name] => 2
                            [abs_path] => /var/www/test/1
                            [is_dir] => 1
                            [son] => Array
                                (
                                    [3.log] => Array
                                        (
                                            [file_name] => 3.log
                                            [abs_path] => /var/www/test/1/2
                                            [is_dir] => 0
                                            [file_ext] => log
                                        )

                                )

                        )

                    [2.log] => Array
                        (
                            [file_name] => 2.log
                            [abs_path] => /var/www/test/1
                            [is_dir] => 0
                            [file_ext] => log
                        )

                )

        )

    [test.txt] => Array
        (
            [file_name] => test.txt
            [abs_path] => /var/www/test
            [is_dir] => 0
            [file_ext] => txt
        )

)

2. php 循环获取目录以及所有子目录中的所有文件,结果是一个二维数组。

/**
 * 循环获取目录以及所有子目录中的所有文件,结果是一个二维数组
 * @param string $dir
 * @return array
 * @author www.phpernote.com
 */
function listDir($dir) {
    static $files = [];

    if (!is_dir($dir)) {
        return $files;
    }

    foreach (scandir($dir) as &$file_name) {
        if ($file_name == '.' || $file_name == '..') {
            continue;
        }

        $file_abs_path = $dir . $file_name;//绝对地址
        $is_dir = is_dir($file_abs_path);

        $files[$file_abs_path] = [
            'file_name' => $file_name,
            'abs_path' => $dir,
            'is_dir' => $is_dir ? 1 : 0,
            'ext' => $is_dir ? '' : pathinfo($file_abs_path, PATHINFO_EXTENSION)
        ];

        $is_dir && listDir($file_abs_path);
    }

    return $files;
}

返回结果示例:

Array
(
    [1] => Array
        (
            [file_name] => 1
            [abs_path] => /var/www/test
            [is_dir] => 1
        )

    [2] => Array
        (
            [file_name] => 2
            [abs_path] => /var/www/test/1
            [is_dir] => 1
        )

    [3.log] => Array
        (
            [file_name] => 3.log
            [abs_path] => /var/www/test/1/2
            [is_dir] => 0
            [file_ext] => log
        )

    [test.txt] => Array
        (
            [file_name] => test.txt
            [abs_path] => /var/www/test
            [is_dir] => 0
            [file_ext] => txt
        )

)
打赏

本文固定链接: https://www.cxy163.net/archives/3017 | 绝缘体

该日志由 绝缘体.. 于 2024年01月01日 发表在 未分类 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: php循环获取目录以及所有子目录中的所有文件 | 绝缘体
关键字: , , , ,

php循环获取目录以及所有子目录中的所有文件:等您坐沙发呢!

发表评论


快捷键:Ctrl+Enter