2008-09-24 7 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

Работал красиво. Мне нужен обратный порядок, поэтому я поменял $ a на $ b в поле определения функции. Спасибо, Джей! – 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.

Смежные вопросы