Как перечислить файлы в каталоге в порядке «последней измененной даты»? (PHP5 в Linux)
function newest($a, $b) { return filemtime($a) - filemtime($b); } $dir = glob('files/*'); // put all files in an array uasort($dir, "newest"); // sort the array by calling newest() foreach($dir as $file) { echo basename($file).'<br />'; }
Кредит идет здесь .
читать файлы в каталоге, используя readdir
для массива вместе с сохраненным filemtime
. Сортируйте массив на основе этого значения, и вы получите результаты.
Решением было бы:
DirectoryIterator
SplFileInfo::getMTime
asort
или arsort
– в зависимости от порядка, в котором вы хотите использовать ваши файлы. Например, эта часть кода:
$files = array(); $dir = new DirectoryIterator(dirname(__FILE__)); foreach ($dir as $fileinfo) { if (!$fileinfo->isDot()) { $files[$fileinfo->getFilename()] = $fileinfo->getMtime(); } } arsort($files); var_dump($files);
Дает мне :
array 'temp.php' => int 1268342782 'temp-2.php' => int 1268173222 'test-phpdoc' => int 1268113042 'notes.txt' => int 1267772039 'articles' => int 1267379193 'test.sh' => int 1266951264 'zend-server' => int 1266170857 'test-phing-1' => int 1264333265 'gmaps' => int 1264333265 'so.php' => int 1264333262 'prepend.php' => int 1264333262 'test-curl.php' => int 1264333260 '.htaccess' => int 1264333259
т.е. список файлов в каталоге, где хранится мой скрипт, с последним измененным в начале списка.
Попробуйте этот же запрос в google, и вы получите ответы быстрее. Приветствия. http://php.net/manual/en/function.filemtime.php
Еще один из Google: http://www.php.net/manual/en/function.sort.php#76198