PHP 生成的文件列表 : any way to have line breaks between different letters?

标签 php presentation

我使用此代码生成一个易于单击的文件列表,该列表包含 apache 不允许有直接索引的目录中的文件:

<?php
foreach (glob("*.*") as $filename) {
    echo "<a href='".$filename."'>".$filename."</a>&nbsp; &#8212;&#8212; &nbsp; ".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>&nbsp; &#8212;&#8212; &nbsp; ".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/

相关文章:

javascript - Reveal.js Markdown 片段

c - 计算时以百分比显示运行状态

javascript - reveal.js 中的片段使用 Markdown

php - 如何为淡入/淡出计数数字jquery添加文本?

php - Mysql 选择入数组

php - 使用 fputcsv 将数组放入 CSV

php - 如何获得 openssl_decrypt 二进制输出?

php - 拉维尔 4 : load class dynamically from string in database

windows - 一次从文件中粘贴一行(或一段)

javascript - 如何强制 Showoff 不向 .content div 添加 margin-top