【问题标题】:how to folder sort out by time phpphp如何按时间排序文件夹
【发布时间】:2012-11-06 11:07:44
【问题描述】:

如何按时间排序文件夹示例我在目录中创建最后一个/最新文件夹,因此最后一个文件夹显示在顶部。

这里是只显示目录的代码

<?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();
    foreach ($folders as $folder){
    $path = $folder['path'];
    $name = $folder['name'];

echo '<li><a href="' .$path .'index.php?album=' .$name . '" class="style1"><font face="Tahoma" class="ws10"><B>' . $name . '</B></a><br /></li>';
  }
?>

【问题讨论】:

    标签: php directory subdirectory


    【解决方案1】:

    为此,您需要首先获取文件夹的创建时间,并将其添加为数组项的键的开始,然后您将能够根据键进行排序...像这样的

    <?php
    function folderlist(){
      $directorylist = array();
      $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"){
                           $created = filectime($startdir . $folder);
                           $directorylist[$created . $startdir . $folder]['name'] = $folder;
                           $directorylist[$created . $startdir . $folder]['path'] = $startdir;
                       }
                   }
               }
               closedir($dh);
           }
       }
    
      ksort($directorylist);
      return($directorylist);
    }
    
    
    $folders = folderlist();
    
    $total_files = 0;
    foreach ($folders as $folder){
        $path = $folder['path'];
        $name = $folder['name'];
        $count = iterator_count(new DirectoryIterator($path . $name));
        $total_files += $count;
    
        echo '<li>';
        echo '<a href="' .$path .'index.php?album=' .$name . '" class="style1">';
        echo '<strong>' . $name . '</strong>';
        echo ' (' . $count . ' files found)';
        echo '</a>';
        echo '</li>';
    }
      echo "Total Files:". $total_files;
    ?>
    

    注意正在使用的新 $created 变量,以及用于按其键对数组进行排序的 ksort() 方法。

    您可以使用 krsort 以相反的顺序进行排序。

    您还可以通过使用 filemtime() 而不是 filectime() 来将排序更改为基于修改后的日期

    【讨论】:

    • 亲爱的你的代码显示 noraml 结果没有任何变化 我在目录中创建了一个文件夹,但文件夹没有显示在顶部,我的文件夹是空白的,我的文件夹中没有文件,但这段代码显示 2 个文件发现
    猜你喜欢
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    • 2010-11-08
    • 2010-09-26
    • 1970-01-01
    相关资源
    最近更新 更多