您通过文件的修改时间索引数组的原始方法看起来会导致具有相同mtime
值的文件覆盖以前的数组键。在某些情况下,如果您的整个目录一次被重写,所有文件可能具有相同的修改时间,因此只有最后一个迭代的文件将在结果数组中。
如果您最终需要按时间排序,您可以构建一个包含文件名和文件修改时间的多维数组,然后使用usort()
.
$dir = new DirectoryIterator('./images/gallery');
foreach($dir as $fileinfo){
if($fileinfo->isFile()){
// Append each file as an array with filename and filetime keys
$Files[] = array(
'filename' => $fileinfo->getFilename(),
'filetime' => $fileinfo->getMtime()
);
}
}
// Then perform a custom sort:
// (note: this method requires PHP 5.3. For PHP <5.3 the you have to use a named function instead.
// see the usort() docs for examples )
usort($Files, function($a, $b) {
if ($a['filetime'] == $b['filetime']) return 0;
return $a['filetime'] < $b['filetime'] ? -1 : 1;
});
在您的输出循环中,访问filename
密钥:
foreach($Files as $file){
echo "<a rel='fancy1' href='/images/gallery/{$file['filename']}'><span><img src='/images/revelsmashy.php?src=/images/gallery/{$file['filename']}&w=128&zc=0&q=100'></span></a>\n";
//-----------------------------------------^^^^^^^^^^^^^^^^^^^^
}