readdir组文件夹的第一个字母

时间:2014-04-13 17:49:40

标签: php readdir opendir

我有一个文件夹列表,但想要按首字母分组,即所有A文件夹在一起,所有B文件夹在一起等等:

$handle = opendir(".");
$projectContents = '';
while ($file = readdir($handle)) 
{
    if (is_dir($file) && !in_array($file,$projectsListIgnore)) 
    {

$projectContents .= '<li><a href="'.$file.'">'.$file.'</a></li>';

    }
}
closedir($handle);

输出:

<ul>
 $projectContents
</ul>

以上代码段从a-2-z中列出的很好,但我不知道如何将它们分组。

每个新的字母部分关闭并重新打开</ul><ul>就足够了,但又不知道如何在当前的片段中加入。

2 个答案:

答案 0 :(得分:1)

将循环中当前文件名的第一个字符与前一个字符的第一个字符进行比较,然后打印</ul><ul>如果它们不相同:

$handle = opendir(".");
$projectContents = '';
$firstLetter = '';
while ($file = readdir($handle)) 
{
    if (is_dir($file) && !in_array($file,$projectsListIgnore)) 
    {
        if ($firstLetter != strtoupper($file{0}) && $firstLetter != '')
        {
            $projectContents .= '</ul><ul>';
        }
        $firstLetter = strtoupper($file{0}); // Store the current character for comparison
        $projectContents .= '<li><a href="'.$file.'">'.$file.'</a></li>';

    }
}
closedir($handle);

答案 1 :(得分:0)

我首先将所有目录名称存储在一个数组中,然后使用asort()函数按字母顺序对所有项目进行排序,而不是创建链接。