来自dir的Php排序文件按降序排列(最新的)

时间:2014-10-17 07:36:53

标签: php file sorting dir

**文件按日期降序排列,怎么做? ** 需要按照日期最新的顶部显示文件

function list_dir($dn){
    if($dn[strlen($dn)-1] != '\\') $dn.='\\';
    static $ra = array();
    $handle = opendir($dn);
    while($fn = readdir($handle)){
        if($fn == '.' || $fn == '..') continue;
        if(is_dir($dn.$fn)) list_dir($dn.$fn.'\\');
        else $ra[] = $dn.$fn;
    }
    closedir($handle);
    return $ra;
} 
 $filelist = list_dir('D:\xampp\htdocs');
    for($i=0;$i<count($filelist);$i++){
        $test = Array();
        $year = $test[2];
        $day = $test[1];
        $month = $test[0];       
        $test = explode("/",date("m/d/Y",filemtime($filelist[$i])));
        echo "<span style='color:red;'><b  style='color:green;'>".$day.'-'.month.'-'.$year. '</b> ' . $filelist[$i]."</span><br>";
    }
 clearstatcache();

1 个答案:

答案 0 :(得分:1)

您可以使用glob,然后使用arsort从高到低排序。

$files = glob("*"); //Fetch all files.
$files = array_combine($files, array_map("filemtime", $files)); //Grab the filetime for each file
arsort($files); //Sort high to low
echo "<pre>";
echo print_r($files, true);
echo "</pre>";

输出(在表格格式化后)

http://i.imgur.com/SPgMH0q.png

<?php

$files = glob("*"); //Fetch all files.
$files = array_combine($files, array_map("filemtime", $files));
arsort($files);
echo "<table>
       <tr>
         <th>File</th>
         <th>Last modified</th>";
foreach( $files as $file => $date ) {
    echo '<tr><td>'. $file .'</td><td>'. date("Y m d g:i:s a", $date).'</td></tr>';
}
echo "</table>";