代码很长哟,呵呵!
我以前也做过一个类似这样的小程序。也是读取目录文件的。我分页的思路大体如下:
1 常规准备。文件总数,当前页码,每页文件数的计算。
  对于文件总数,不用每次操作都计算,可以将其放到session里。
2 根据过滤条件遍历目录。将符合条件的文件放到数组里。
  比如说,你要请求从第20个文件开始,你要设置个计数器,只有当计数到20的时候才将文件保存在数组里。
数组保存每页数量够了以后,终止遍历。
3 将数组排序,输出数组。 这样做的目的可以避免每次请求都遍历整个目录。但缺点是,只能对请求出来的文件进行排序,如果要所有文件
排序,还要遍历整个数组。当然如果在linux系统下,你也可以结合shell命令来进行目录操作。

解决方案 »

  1.   

    恩,1楼的就可以,如果你的目录下文件不是动态的话,你可以把文件名都存在一个xml里面,每20个一个节点,翻页就读取相邻节点下的就可以了.
      

  2.   

    谢谢,我想把文件符合条件的文件放进一个数组内,这样我可以比较方便的使用,但是调了好久这个数组总不成功,请教下问题出在哪里?
    for ($i=0; $i <$contentsListLength-2; $i++)
    {
        $contentFileName = $contents[$i];
        $fileType = explode(".", $contentFileName);
        $previewUrl = $rootFolder . $contentsFolder . $contentFileName;
        $isShown = false;    if ($type == "videoFile" && in_array($fileType[1], $controlVideoFileTypeArr))
        {
        $isShown = true;
        }
        elseif ($type == "picFile" && in_array($fileType[1], $controlPicFileTypeArr))
        {
        $isShown = true;
        } 
    }
    就是把满足不同if条件的存放进不同的数组。
      

  3.   

    你上面的代码有点混乱呀.
    你只是要求分页.
    假定你已经把所有的文件都取出来放到数组里,并且放到session里.
    哪么你要做的就是:
    1 检查session有没有数组,没有就重新遍历.
    2 如果存在,取出来,获取文件总数,然后根据每页显示条数,计算可能有多少页等分页数据.
    3 根据上述计算的数据,输出数据.另外从你上面的代码上来看,你把视频和图片放到不同的数组里了.这样的话,你可能要制定一些策略吧.一些显示几张图片,显示几个视频.可能将问题复杂化了.