glob() - sort by date

2019-01-01 04:28发布

问题:

I\'m trying to display an array of files in order of date (last modified).

I have done this buy looping through the array and sorting it into another array, but is there an easier (more efficient) way to do this?

回答1:

For the sake of posterity, in case the forum post linked in the accepted answer is lost or unclear to some, the relevant code needed is:

<?php

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

?>

Tested this on my system and verified it does sort by file mtime as desired. I used a similar approach (written in Python) for determining the last updated files on my website as well.



回答2:

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


回答3:

This solution is same as accepted answer, updated with anonymous function1:

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

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

1 Anonymous functions have been introduced in PHP in 2010. Original answer is dated 2008.



标签: php