从当前目录和子目录中检索所有文件

时间:2017-05-26 09:43:42

标签: php file

我正在尝试使用以下函数来检索文件夹和子文件夹中的所有文件,不确定它为什么不返回任何结果。

function listDirectory($path){
    $ret = array();
    function listFolderFiles($dir){
        global $ret;
        if (is_dir($dir) !== true) {
            return false;
        }
        $ffs = scandir($dir);
        unset($ffs[array_search('.', $ffs, true)]);
        unset($ffs[array_search('..', $ffs, true)]);

        foreach($ffs as $ff){
            $ret[] = $ff;
            if(is_dir($ff)) {
                listFolderFiles($dir.'/'.$ff);
            }
        }
        return $ret;
    }
    listFolderFiles($path);
    return $ret;
}

2 个答案:

答案 0 :(得分:0)

返回null,因为代码的执行在此停止

if (count($ffs) < 1) {
    return;
}

这主要是因为您可能放置给定的$path值可能是空的[目录]含义,根本没有[文件]或[目录]。

如果给定的listDirectory实际上是包含array$path的目录,则您的方法file将返回directory

如果需要,您可以在首先调用scandir方法之前添加其他验证。

function listFolderFiles($dir) {
    global $ret;
    if (is_dir($dir) !== true) {
        return false;
    }

    $ffs = scandir($dir);
    // Rest of code
}

希望这有助于您的情况。

答案 1 :(得分:0)

非常感谢你的帮助,排序。

var_dump(listDirectory("../../../../wp-content/uploads/"));exit;
function listDirectory($path){
    //var_dump($path);exit;
    if(!file_exists ( $path)) {
        var_dump("File doesn't exist");exit;
    }
    $ret = array();
    function listFolderFiles($dir){
        global $ret;
        if (is_dir($dir) !== true) {
            return false;
        }
        $ffs = scandir($dir);
        unset($ffs[array_search('.', $ffs, true)]);
        unset($ffs[array_search('..', $ffs, true)]);
        foreach($ffs as $ff){
            if(is_dir($dir.'/'.$ff)) {
                listFolderFiles($dir.'/'.$ff);
            } else {
                $ret[] = $ff;
            }
        }
        return $ret;
    }
    return listFolderFiles($path);
}
相关问题