2013-08-06 127 views
0

使用下面的代碼,我正在生成位於服務器上的目錄中的pdf列表。我希望按日期排序結果,最近的最早的最早的結果。按日期排序文件列表

這是在行動:http://mt-spacehosting.com/fisheries/plans/northeast-multispecies/

<?php 
$sub = ($_GET['dir']); 
$path = 'groundfish-meetings/'; 
$path = $path . "$sub"; 
$dh = opendir($path); 
$i=1; 

while (($file = readdir($dh)) !== false) { 
    if($file != "." && $file != "..") { 
     if (substr($file, -4, -3) =="."){ 
     echo "$i. <option value='" . home_url('/groundfish-meetings/' . $file) .   "'>$file</option>"; 
     } $i++; 
     } 
    } closedir($dh); 
?> 
</select> 

任何幫助,將不勝感激。

回答

1

你可以使用PHP的glob功能和自定義排序功能是這樣的:

<?php 
$sub = ($_GET['dir']); 
$path = 'groundfish-meetings/'; 
$path = $path . "$sub"; 
$file_list = glob($path."*.pdf"); 

function sort_by_mtime($file1,$file2) { 
$time1 = filemtime($file1); 
$time2 = filemtime($file2); 
if ($time1 == $time2) { 
    return 0; 
} 
return ($time1 < $time2) ? 1 : -1; 
} 
usort($file_list ,"sort_by_mtime"); 
$i = 1; 
foreach($file_list as $file) 
{ 
    echo "$i. <option value='" . home_url('/groundfish-meetings/' . $file) .    
"'>$file</option>"; 
    $i++; 
} 
+0

好吧,我得到了一個工作,但目錄正在選項文本中列出。任何方式來刪除? – mtuttle

+1

是的。使用: echo「$ i。」; – Jithesh

+0

我最終不得不編輯回聲線來生成正確的鏈接url,但你讓我在那裏!回聲「$我。<選項值='」。 home_url($ file)。「'>」。str_replace(dirname($ file)。'/','',$ file)。「」; – mtuttle

0

這會得到在路徑上的所有文件/到/文件作爲一個數組,然後排序文件的修改時間數組

$files = glob('path/to/files/*.*'); 
usort($files, function($a, $b) { 
    return filemtime($a) < filemtime($b); 
});