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


Scandir subfolder issue, looping through folders and files into separate arrays

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

$files=scandir(getcwd());foreach($files作为$file){if(is_file($file)){if($file=='description.txt'){//php小于或等于5$description=file_get_contents('./description.txt',file_USE_INCLUDE_PATH);}if($file=='subtitle.txt'){//php小于或等于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=丑闻($file);foreach($subFiles为$file2){echo$file2;}}}

问题是$file2包含父目录中的所有文件,而不仅仅是子文件夹中的项目。如果我在foreach之前回显$files,它还将包括子文件夹和子文件夹文件,这不是最好的,但也不会真正妨碍我想要做的事情。感谢

Scandir还返回"."answers"..",它们也是目录,因此您代码的其他部分if(is_file($file)){也在执行中。在循环时检查并跳过"."与".."将解决问题

$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;
        }
    }
}