需要帮助按PHP排序降序;似乎没什么用

时间:2013-02-18 20:30:38

标签: php sorting

我有一个带缩略图和链接的相册样式页面设置。问题是由于某种排序问题,缩略图与文件夹及其连接的链接不匹配。可以在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);
}

我没有使用数据库。

2 个答案:

答案 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);