繁体   English   中英

PHP在多个目录中输出多个文件

[英]PHP Output Multiple Files In Multiple Directories

我有一个名为PDFS的主目录,其中有5个子目录,分别代表年份(2011、2012、2013、2014、2015)。 每个“年目录”中有11个pdf。 我需要访问PDFS目录并获取所有“年份目录”,然后获取每个“年份目录”中的所有pdf才能显示在页面上。 因此,例如2011年“年目录”中的pdf将列在2011年标题下。 与2012、2013等相同。我尝试了许多不同的方法。 我可以使用scandir()输出“年份目录”。 我可以使用foreach循环和glob()在单个“年份目录”中输出文件。 除了使用每个“年份目录”上的glob()进行多个foreach循环外,我一生都无法弄清楚如何输出每个“年份目录”的文件。 必须有一种更动态的方式来进行设置。 有什么建议么? 我觉得我在foreach中需要某种foreach吗? 这是我正在使用的:

//set main directory
$dir = 'PDFS';

//gets sub directories of PDFS directory
$directories = scandir($dir);

//removes the first to indexes in the directories array that are just dots
unset($directories[0]);
unset($directories[1]);

//outputs an array of the sub directories from scandir() starting at index 2
print_r($directories);

//initialize $i variable for loop
$i=0;

//if I manually set the $dir variable to "PDFS/2011/*" this will output links
//to each pdf inside the 2011 year directory
    foreach(glob($dir) as $file) {
        $i++;
        echo "<a href='$file'>$file</a><br />";
    }

您处在正确的轨道上,这段代码应该可以解决问题:

//set main directory
$mainDir = 'PDFS';

//gets sub directories of PDFS directory
$subDirectories = scandir($mainDir);

//removes the first two indexes in the directories array that are just dots
unset($subDirectories[0]);
unset($subDirectories[1]);

// first loop through all sub directories ...
foreach($subDirectories as $subDirectory) {
    echo '<h1>'.$subDirectory.'</h1>';
    // ... and then loop through all files in each sub directory
    foreach(glob($mainDir.'/'.$subDirectory.'/*') as $file) {
        echo "<a href='$file'>$file</a><br />";
    }
}

为了更好地理解,我更改了一些var名称。

一些东西:

  • 使用foreach时无需计算变量i

  • 如果您将字符串手动设置在一起,则尝试逐步生成它,然后将生成的字符串与手动的字符串进行比较,直到适合为止。 (您用点将两个字符串连接起来.

  • 您可以配置glob函数,使其仅查找某些文件类型( *.pdf )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM