我使用下面的代码从文件夹生成照片库。 我如何才能明确地对缩略图进行排序。
<?php
/* settings */
$image_dir = 'photo_gallery/';
$per_column = 6;
/* step one: read directory, make array of files */
if ($handle = opendir($image_dir)) {
while (false !== ($file = readdir($handle)))
{
if ($file != '.' && $file != '..')
{
if(strstr($file,'-thumb'))
{
$files[] = $file;
}
}
}
closedir($handle);
}
/* step two: loop through, format gallery */
if(count($files))
{
foreach($files as $file)
{
$count++;
echo '<a class="photo-link" rel="one-big-group" href="',$image_dir,str_replace('-thumb','',$file),'"><img src="',$image_dir,$file,'" width="100" height="100" /></a>';
if($count % $per_column == 0) { echo '<div class="clear"></div>'; }
}
}
else
{
echo '<p>There are no images in this gallery.</p>';
}
?>
答案 0 :(得分:0)
直接点击你的问题,当你正在阅读文件的目录时,你可以使用一些原生的php函数获取有关文件的信息...
上次访问文件时:fileatime - http://www.php.net/manual/en/function.fileatime.php
创建文件时:filectime - http://www.php.net/manual/en/function.filectime.php
修改文件时:filemtime - http://php.net/manual/en/function.filemtime.php
这些返回时间,格式为unix时间。
为简单起见,我会使用filectime来查找时间,并将该值用作$ files数组中的KEY,如下所示:$ files [filectime($ file)] = $ file;
然后你可以使用像ksort()这样的简单数组排序函数在循环之外对它们进行排序,然后再开始第二步。
现在......稍微深入一点......我可能会使用数据库来存储这样的信息,而不是每次加载页面时都会访问文件系统。在开发过程中会有更多的开销,但根据目录的大小,可以节省大量的时间和处理能力。
测试2012-06-23
/* settings */
$image_dir = 'photo_gallery/';
$per_column = 6;
/* step one: read directory, make array of files */
if ($handle = opendir($image_dir)) {
while (false !== ($file = readdir($handle)))
{
if ($file != '.' && $file != '..')
{
if(strstr($file,'-thumb'))
{
$files[filemtime($image_dir . $file)] = $file;
}
}
}
closedir($handle);
}
/* step two: loop through, format gallery */
if(count($files))
{
krsort($files);
foreach($files as $file)
{
$count++;
echo '<a class="photo-link" rel="one-big-group" href="',$image_dir,str_replace('-thumb','',$file),'"><img src="',$image_dir,$file,'" width="100" height="100" /></a>';
if($count % $per_column == 0) { echo '<div class="clear"></div>'; }
}
}
else
{
echo '<p>There are no images in this gallery.</p>';
}
?>
/* settings */
$image_dir = 'photo_gallery/';
$per_column = 6;
/* step one: read directory, make array of files */
if ($handle = opendir($image_dir)) {
while (false !== ($file = readdir($handle)))
{
if ($file != '.' && $file != '..')
{
if(strstr($file,'-thumb'))
{
$files[filemtime($image_dir . $file)] = $file;
}
}
}
closedir($handle);
}
/* step two: loop through, format gallery */
if(count($files))
{
krsort($files);
foreach($files as $file)
{
$count++;
echo '<a class="photo-link" rel="one-big-group" href="',$image_dir,str_replace('-thumb','',$file),'"><img src="',$image_dir,$file,'" width="100" height="100" /></a>';
if($count % $per_column == 0) { echo '<div class="clear"></div>'; }
}
}
else
{
echo '<p>There are no images in this gallery.</p>';
}
?>