我有一个带缩略图和链接的相册样式页面设置。问题是由于某种排序问题,缩略图与文件夹及其连接的链接不匹配。可以在http://www.remixnightclub.net/album.php处查看该页面以及代码。关于我可以尝试使其正常工作的任何想法?如果不太明显的话,我对php比较新。
//if no album selected
if (!$get_album)
{
echo "<b>Select an album:</b><p />";
//find each album and display as links
$y = 0;
$handle = opendir($base);
while (false !== ($file = readdir($handle)))
{
if (is_dir($base."/".$file) && $file !="." && $file !=".." && $file != $thumbs)
{
echo "<table style='display:inline;' class='nav'><tr><td align='center'><a href='$page?album=$file'><img src='$base/$thumbs/$images[$i]'></a><br /><li><a href='$page?album=$file'>".$file."</a></li></td></tr></table>";
$i++;
if ($y==$column1)
echo "<br />";
$y = 0;
}
}
closedir($handle);
}
我没有使用数据库。
答案 0 :(得分:0)
readdir
函数以基本随机的顺序返回目录条目;像ls
这样的程序在显示它们之前会遇到排序问题,但它们并没有在文件系统中自然排序。将它们读入数组并在迭代之前对其进行排序。
示例:
$files = array();
while (false !== ($file = readdir($handle)))
{
if (is_dir($base."/".$file) && $file !="." && $file !=".." && $file != $thumbs)
{
array_push($files, $file);
}
}
closedir($handle);
rsort($files);
foreach ($files as $file)
等
答案 1 :(得分:0)
另一种解决方案是使用glob
读取整个目录。 glob
会为您排序文件:
$files = glob($base);
foreach ($files as $file)
{
// etc.
您甚至可以指定一种模式,只获取您想要的文件,不包括拇指。
修改:如果您想降序,则需要撤消结果:
$files = glob($base);
$inverse_files = array_reverse($files);