数组中的PHP目录和文件信息

数组中的PHP目录和文件信息,php,Php,因此存在用户目录空间。每个用户都有自己的空间,可以上传.gif、jpg、png和mp4文件 用户可以在任意多个目录或子目录中创建和管理自己的文件 我不知道如何做我需要为我的最终结果,所以我没有示例代码。我需要的最终结果如下: foreach ($file AS $file) { $data[] = array('type' => 'image', 'path' => $file["path"], 'name' => $file[name],

因此存在用户目录空间。每个用户都有自己的空间,可以上传.gif、jpg、png和mp4文件

用户可以在任意多个目录或子目录中创建和管理自己的文件

我不知道如何做我需要为我的最终结果,所以我没有示例代码。我需要的最终结果如下:

foreach ($file AS $file) {
    $data[] = array('type' => 'image', 
    'path' => $file["path"],
    'name' => $file[name], 
    'time' => $file["update_time"]);
}
我如何确切地从目录中获得详细信息?记住,我不知道在基本目录之后结构会是什么样子


此外,我需要排除所有以开头的目录和文件。(例如.htaccess,但还有其他的)

给你。Usa递归函数对每个目录进行迭代。如果是目录,则执行递归,否则获取并存储数据:

$directoryToScan = './';
$results = [];
$tree = getDirEnties($directoryToScan, $results);
var_dump($tree);

function getDirEnties($directory, &$results) {
    $entries = scandir($directory);
    foreach ($entries as $item) {
        if (!in_array($item, ['.', '..']) && substr($item, 0, 1) !== '.') {
            $path = $directory . '/' . $item;
            if (is_dir($path)) {
                getDirEnties($path, $results);
            } else {
                $pathInfo = pathinfo($path);
                $name = $pathInfo['filename'];
                $type = 'unknown';
                if (!empty($pathInfo['extension'])) {
                    $name .= "." . $pathInfo['extension'];
                    switch (strtolower($pathInfo['extension'])) {
                        case "gif":
                        case "jpg":
                        case "png":
                        case "jpeg":
                        case "bmp":
                            //etc..
                            $type = 'image';
                            break;
                        case "mp4":
                            $type = 'media';
                            break;
                    }
                }
                $data = [
                    'name' => $name,
                    'path' => $pathInfo['dirname'],
                    'type' => $type,
                    'time' => filemtime($path)
                ];
                $results[] = $data;
            }
        }
    }
    return $results;
}

以递归方式对调用
glob()
得到的条目进行迭代。这还允许过滤,例如忽略名称以点(
)开头的文件。您需要创建一个递归函数,对所有条目进行处理。你的朋友将是
scandir
是_dir
在_array中
glob看起来是个不错的选择。事实上,有人在php页面上几乎拥有了我所需要的代码,这使得它变得更好。