PHP头条
热点:

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


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

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

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

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

        $files[$file_name] = [
            'file_name' => $file_name,
            'abs_path' => $dir,//绝对地址
        ];

        if (is_dir($dir . DIRECTORY_SEPARATOR . $file_name)) {
            $files[$file_name] += [
                'is_dir' => 1,
                'son' => listDir($dir . DIRECTORY_SEPARATOR . $file_name)
            ];
        } else {
            $info = pathinfo($file_name);
            $files[$file_name] += [
                'is_dir' => 0,
                'file_ext' => isset($info['extension']) ? strtolower($info['extension']) : ''
            ];
        }
    }

    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
        )

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

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

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

        $files[$file_name] = [
            'file_name' => $file_name,
            'abs_path' => $dir,//绝对地址
        ];

        if (is_dir($dir . DIRECTORY_SEPARATOR . $file_name)) {
            $files[$file_name] += [
                'is_dir' => 1,
            ];

            listDir($dir . DIRECTORY_SEPARATOR . $file_name);
        } else {
            $info = pathinfo($file_name);
            $files[$file_name] += [
                'is_dir' => 0,
                'file_ext' => isset($info['extension']) ? strtolower($info['extension']) : ''
            ];
        }
    }

    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
        )

    [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
        )

)

www.phpzy.comtrue/php/38628.htmlTechArticlephp循环获取目录以及所有子目录中的所有文件 循环获取目录以及所有子目录中的所有文件。 /** * 循环获取目录以及所有子目录中的所有文件,结果是一个多维数组 * @param $dir * @return...

相关文章

PHP之友评论

今天推荐