[英]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
。
如果您将字符串手动设置在一起,则尝试逐步生成它,然后将生成的字符串与手动的字符串进行比较,直到适合为止。 (您用点将两个字符串连接起来.
)
*.pdf
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.