0

時間の例でフォルダーを並べ替える方法の例 ディレクトリに最後/最新のフォルダーを作成するので、最後のフォルダーが一番上に表示されます。

ここにディレクトリのみを表示するコードがあります

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

1 に答える 1

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を逆の順序で並べ替えることができます。

filectime()の代わりにfilemtime()を使用して、変更された日付に基づくように順序を変更することもできます。

于 2012-11-18T07:52:32.383 に答える