我使用此代码生成一个易于单击的文件列表,该列表包含 apache 不允许有直接索引的目录中的文件:
<?php
foreach (glob("*.*") as $filename) {
echo "<a href='".$filename."'>".$filename."</a> —— ".intval(filesize($filename) / (1024 * 1024))."MB<br />";
}
?>
事实是,这是一个包含超过 1000 个文件的文件夹,并且非常容易无法快速找到我们要搜索的内容,哈哈。
我问以防万一,请问您是否能找到一种在我们有新的第一个字母时插入跳行的方法? 在所有 A 之后,让我们在列出 B 之前跳过一行,并在 C 之间跳过一个新行...
如果您能提供帮助,非常感谢!
最佳答案
这样的东西应该可以工作(假设你的文件名已经按字母顺序排序):
// create array of letters of the aplhabet
$letters = array("a","b","c","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");
foreach (glob("*.*") as $filename) {
if (in_array($filename[0],$letters)){ // check if first character of filename is in the array
echo "<br />";
if(($key = array_search($filename[0], $letters)) !== false) {
unset($letters[$key]); //remove letter from array
}
}
echo "<a href='".$filename."'>".$filename."</a> —— ".intval(filesize($filename) / (1024 * 1024))."MB<br />";
}
因此,我们正在创建一个包含字母表中所有字母的数组。然后我们检查循环中当前字符串的第一个字母是否在数组中。如果是,我们回显另一个中断,然后从数组中删除该字母,然后像平常一样回显我们的行。
每次出现新字母时,这都会创建一个额外的换行符
如果您的文件名并非全部小写,您可能需要使用 strtolower()
作为对文件名字符串的引用来确保比较正确的大小写
关于PHP 生成的文件列表 : any way to have line breaks between different letters?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26296827/