如何按字母顺序使用php整理文件夹目录

时间:2014-12-04 16:48:12

标签: php sorting dir

如何使用php按字母顺序排序文件夹目录  请帮我解决这个问题,这不是[重复]发帖谢谢。

此代码显示如下 (按时间排序)

  • 苹果
  • 玩偶
  • 飞行
  • 香蕉

我想要这样

ABC

  • 飞行
  • 苹果
  • 苹果
  • 香蕉

DEF

  • 玩偶

php code

<?php
    function folderlist(){
      $startdir = './';
      $ignoredDirectory[] = '.'; 
      $ignoredDirectory[] = '..';
       if (is_dir($startdir)){
           if ($dh = opendir($startdir)){
               while (($folder = readdir($dh)) !== false){
                   if (!(array_search($folder,$ignoredDirectory) > -1)){
                     if (filetype($startdir . $folder) == "dir"){
                           $directorylist[$startdir . $folder]['name'] = $folder;
                           $directorylist[$startdir . $folder]['path'] = $startdir;
                       }
                   }
               }
               closedir($dh);
           }
       }
    return($directorylist);
    }


    $folders = folderlist();
    sort($folders);
        foreach ($folders as $folder){
        $path = $folder['path'];
        $name = $folder['name'];




    echo '<div class="menu">
    <h3 class="headerbar"><a href="' .$path .'index2.php?folder=' .$name . '" class="style1"><span class="headertit">' .$name . '</span></a></div>';
      }
    ?>

2 个答案:

答案 0 :(得分:0)

将您的电话号码替换为sort,如下所示:

usort($folders, function ($a, $b) {
    return strnatcmp($a['name'], $b['name']);
}); 

此外,您可能希望使用DirectoryIteratorscandir

来降低代码复杂性

答案 1 :(得分:0)

你应该尝试使用scandir()。默认情况下,scandir()将按字母顺序对文件进行排序:

$dir    = './';
$files1 = scandir($dir);

print_r($files1);

http://php.net/manual/en/function.scandir.php