Xinu

php 非递归遍历某个文件夹下所有文件
要学的还有很多!<?php function scanfiles($dir) { if (!is_d...
扫描右侧二维码阅读全文
25
2018/01

php 非递归遍历某个文件夹下所有文件

要学的还有很多!

<?php
function scanfiles($dir) {
    if (!is_dir($dir)) {
        return array();
    }
    // 兼容各操作系统
    $dir = rtrim(str_replace('\\', '/', $dir), '/') . '/';
    // 栈,默认值为传入的目录
    $dirs = array($dir);
    // 放置所有文件的容器
    $rt = array();
    do {
        // 弹栈
        $dir = array_pop($dirs);
        // 扫描该目录
        $tmp = scandir($dir);
        foreach ($tmp as $f) {
            // 过滤. ..
            if ($f == '.' || $f == '..') {
                continue;
            }
            // 组合当前绝对路径
            $path = $dir . $f;
            // 如果是目录,压栈。
            if (is_dir($path)) {
                array_push($dirs, $path . '/');
            } else {
                if (is_file($path)) {
                    // 如果是文件,放入容器中
                    $rt[] = $path;
                }
            }
        }
    } while ($dirs);
    // 直到栈中没有目录
    return $rt;
}
Last modification:January 25th, 2018 at 10:04 pm

Leave a Comment