2008-09-24 157 views
42

我試圖按日期順序顯示文件數組(最後修改)。glob() - 按日期排序

我做這買遍歷數組循環,並將其分類到另一個數組,但有更簡單的(更有效)的方式來做到這一點?

+1

您是否找到過該產品? (剛剛在你的問題標題上做過Google搜索):http://www.webdeveloper.com/forum/showthread.php?t=188670 – John 2008-09-24 01:58:18

回答

83

爲子孫後代着想,萬一在接受答案鏈接的論壇後丟失或不清楚一些,所需要的相關代碼:

<?php 

$myarray = glob("*.*"); 
usort($myarray, create_function('$a,$b', 'return filemtime($a) - filemtime($b);')); 

?> 

測試了我的系統上並驗證它排序由文件mtime根據需要。我使用了類似的方法(用Python編寫)來確定我網站上的最新更新文件。

+10

工作得很好。我想要相反的順序,所以我在函數定義字段中用$ b替換$ a。謝謝Jay! – AVProgrammer 2012-01-11 22:53:32

+3

我只是再次使用它。確實爲了後代! – AVProgrammer 2012-03-28 21:21:34

32
<?php 
$items = glob('*', GLOB_NOSORT); 
array_multisort(array_map('filemtime', $items), SORT_NUMERIC, SORT_DESC, $items); 
7

該解決方案是一樣的accepted answer,用匿名函數更新:

$myarray = glob("*.*"); 

usort($myarray, function($a, $b) { return filemtime($a) - filemtime($b); }); 

Anonymous functions已經在PHP引入了在2010年原來的答覆是於2008年。