【问题标题】:how to sort out folder directory by alphabetically using php如何使用php按字母顺序排序文件夹目录
【发布时间】:2015-02-02 15:38:36
【问题描述】:

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

这段代码是这样显示的 (按时间排序)

  • 橙色
  • 苹果
  • 娃娃
  • 飞机
  • 香蕉
  • 大象

我也想要这样

ABC

  • 飞机
  • 苹果
  • 苹果
  • 香蕉

DEF

  • 娃娃
  • 大象

php代码

<?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>';
      }
    ?>

【问题讨论】:

标签: php sorting dir


【解决方案1】:

将您对 sort 的呼叫替换为以下内容:

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

此外,您可能希望通过使用 DirectoryIteratorscandir 来降低代码复杂性

【讨论】:

  • 在不知道您的错误信息的情况下,没有人可以帮助您。发布的代码应该可以工作。示例:3v4l.org/gc2qg
  • 你删的太多了。您的代码当前的方式永远不会调用您的函数。曾经在调用sort 之上的那行应该保留下来。在调用usort之前添加$folders = folderlist();
  • 好吧,我再次更改代码并在 localhost 上检查它是否显示此错误解析错误:语法错误,第 24 行 /in/qsaZX 中的意外 T_FUNCTION 我还在我的网站上检查它显示的是简单列表还有我的网站,它显示错误,简单列出警告:sort() 期望参数 2 很长,对象在第 26 行的 /home/user/public_html/dir.php 中给出
  • 如果你得到了意外的 T_FUNCTION,你要么在复制代码时搞砸了,要么在本地主机上使用(非常)过时的 php 版本。对于第二个错误:为什么要调用排序?如果您想使用发布的代码,您需要使用usort
【解决方案2】:

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

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

print_r($files1);

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-08
    • 2015-09-12
    • 2011-04-28
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    • 2017-01-25
    相关资源
    最近更新 更多