.Stealth Posted June 4, 2010 Share Posted June 4, 2010 What is the best way to sort images in a folder by date. Here's what i've got so far: $images = array();//set array ready for the images $handle = opendir($imagesFolder);//open directory handle while(false !== $fName = readdir($handle)){ //get file path $fileInfo = pathinfo($imagesFolder.$fName); //get and convert extension to lower case $extension = strtolower($fileInfo['extension']); //add jpg and png file types to array if($extension == 'jpg' || $extension == 'jpeg'){ $images[] = $fName; } if($extension == 'png'){ $images[] = $fName; } } $sortedImages = array(); foreach($images AS $image){ $fileTime = filemtime($imagesFolder . $image);//get image creation time $sortedImages[] = array($fileTime => $image); } sort($sortedImages); foreach($sortedImages AS $sorted){ foreach($sorted AS $key => $value){ echo "<strong>Filetime:</strong> " . $key . " <strong>Filename:</strong> " . $value . "<br />"; } } All works well apart from the sorting part. It does sort something, but i'm assuming its just the size of the number. I didn't expect sort() to work but it was worth a shot. This is what the above script outputs: Filetime: 1268932652 Filename: 1.png Filetime: 1261508122 Filename: 5.jpg Filetime: 1268933066 Filename: 2.png Filetime: 1268932936 Filename: 4.png Filetime: 1268957350 Filename: 3.png Filetime: 1261508126 Filename: 6.jpg The files are created respective of their names. e.g 1.png was created first, 2.png was created second and so on. How can i sort these based on the time they were created? Thanks. Link to comment https://forums.phpfreaks.com/topic/203819-best-way-to-sort-images-in-a-folder-by-date/ Share on other sites More sharing options...
ignace Posted June 4, 2010 Share Posted June 4, 2010 function getFilesByExtension($directory, $validExtensions) { $files = array(); $directory = rtrim($directory, '\/') . DIRECTORY_SEPARATOR; $dh = opendir($imagesFolder); while (false != ($file = readdir($dh))) { $extension = pathinfo($file, PATHINFO_EXTENSION); $extension = strtolower($extension); if (in_array($extension, $validExtensions)) { $files[] = $directory . $file; } } closedir($dh); return $files; } function usort_sortFilesByLastModifiedTimeHelper($file1, $file2) { $mtime1 = filemtime($file1); $mtime2 = filemtime($file2); if ($mtime1 === $mtime2) { return 0; } return $mtime1 < $mtime2 ? -1 : 1; } $images = getFilesByExtension($imagesFolder, array('jpg', 'jpeg', 'gif', 'png')); usort($images, 'usort_sortFilesByLastModifiedTimeHelper'); print_r($images); Link to comment https://forums.phpfreaks.com/topic/203819-best-way-to-sort-images-in-a-folder-by-date/#findComment-1067572 Share on other sites More sharing options...
.Stealth Posted June 4, 2010 Author Share Posted June 4, 2010 Thanks! I'll give it a go. Just trying to work everything out first before i attempt to write a function (i would reuse your code but i would rather know what's going on). I think i understand it all apart from this bit: $directory = rtrim($directory, '\/') . DIRECTORY_SEPARATOR; What's with the DIRECTORY_SEPARATOR bit? I've never seen that done before, wont it just add that onto the end of the $directory string? Link to comment https://forums.phpfreaks.com/topic/203819-best-way-to-sort-images-in-a-folder-by-date/#findComment-1067791 Share on other sites More sharing options...
ignace Posted June 4, 2010 Share Posted June 4, 2010 What's with the DIRECTORY_SEPARATOR bit? I've never seen that done before, wont it just add that onto the end of the $directory string? Indeed it does. $directory = rtrim($directory, '\/') . DIRECTORY_SEPARATOR; rtrim first removes the trailing slash if any and adds a trailing slash. This code makes sure that $directory contains a trailing slash before proceeding. Link to comment https://forums.phpfreaks.com/topic/203819-best-way-to-sort-images-in-a-folder-by-date/#findComment-1067888 Share on other sites More sharing options...
.Stealth Posted June 4, 2010 Author Share Posted June 4, 2010 Ah i see. Thanks for your help! Link to comment https://forums.phpfreaks.com/topic/203819-best-way-to-sort-images-in-a-folder-by-date/#findComment-1067921 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.