扫描目录与限制文件号码?

时间:2011-09-10 02:53:23

标签: php directory

我已经编写了一些代码来打印带有限制和偏移的文件夹内的文件(比如MySQL的LIMIT)。

我的代码:

/*
files:
.
..
read.txt
*/
$dir = "lab";
$limit = 2;
$file_id = 1;
$start = 1;
$files = array();
$dh  = opendir($dir);
while (false !== ($filename = readdir($dh))) {
    if($file_id > $start and $file_id >= $limit){
        $files[$file_id] = $filename;
    }
    $file_id++;
}   
print_r($files);
/*
files:
Array ( [2] => .. [3] => read.txt ) 
*/

我的文件夹可能包含1000个或更多文件,并且将为每个访问者执行此功能。

所以我想在没有循环的情况下完成这项工作,这可能吗?如果不是,有没有办法让这更快?

2 个答案:

答案 0 :(得分:2)

http://www.php.net/scandir可能是避免自行循环的最好方法。

如果你愿意,你也可以实现像这样的基本START / LIMIT系统

$start = 5;
$limit = 20;

$thisFile = 0;

while (false !== ($filename = readdir($dh))) {
    // Check the start
    if ($thisFile < $start)
        continue;
    $thisFile++;

    // Check the end
    if ($thisFile > $limit)
        break;

    // Your other code can go in here
}

答案 1 :(得分:0)

您可以检索目录中的整个文件列表,而不使用scandir的任何循环。

检索完一系列文件后,您可以应用任何类型的过滤(使用array_filter)和限制(使用array_slice