Scandir子文件夹问题,将文件夹和文件循环到单独的数组中

时间:2014-09-04 19:09:35

标签: php content-management-system scandir

为希望能够将文件上传到其服务器(具有特定命名)并将其解析为网站内容的客户构建网站。我得到它的第一个初始文件夹很好,但我很难导出子文件夹文件是他们自己的数组。这是代码:     

    $files = scandir(getcwd());
    foreach ($files as $file) {
        if(is_file($file)) {
            if ($file == 'description.txt') {
                // php less than or equal 5
                $description = file_get_contents('./description.txt', FILE_USE_INCLUDE_PATH);
            }
            if ($file == 'subtitle.txt') {
                // php less than or equal 5
                $subtitle = file_get_contents('./subtitle.txt', FILE_USE_INCLUDE_PATH);
            }
            if ($file == 'item.png') {
                $mainImage = 'item.png';
            }
            if ($file == 'item.jpg') {
                $mainImage = 'item.jpg';
            }
        } elseif (is_dir($file)) {
            $subFiles = scandir($file);
            foreach ($subFiles as $file2) {
                echo $file2;
            }
        }
    }
    

问题是$ file2包含来自父目录的所有文件,而不仅仅是子文件夹中的项目。如果我在foreach之前回显$ files,它还会包含子文件夹和子文件夹文件,这些文件不是优选的,但并不会妨碍我想做的事情。感谢

1 个答案:

答案 0 :(得分:0)

Scandir也回归"。"和" .."如果(is_file($ file)){也正在执行,那么也是dirs所以你的其他部分代码。检查并跳过"。"和" .."而循环将解决问题

$files = scandir(getcwd());
foreach ($files as $file) {
    if(is_file($file)) {
        if ($file == 'description.txt') {
            // php less than or equal 5
            $description = file_get_contents('./description.txt', FILE_USE_INCLUDE_PATH);
        }
        if ($file == 'subtitle.txt') {
            // php less than or equal 5
            $subtitle = file_get_contents('./subtitle.txt', FILE_USE_INCLUDE_PATH);
        }
        if ($file == 'item.png') {
            $mainImage = 'item.png';
        }
        if ($file == 'item.jpg') {
            $mainImage = 'item.jpg';
        }
    } elseif (is_dir($file)) {
        if($file=="." || $file==".."){
            continue;
        }
        $subFiles = scandir($file);
        foreach ($subFiles as $file2) {
            echo $file2;
        }
    }
}