2011-09-10 121 views
0

我寫了一些代碼來打印限制和偏移文件夾內的文件(如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個或多個文件,該功能會爲每個訪問者執行。

所以我想做這個沒有循環的工作,這可能嗎?如果不是,有沒有辦法讓這個更快?

回答

0

您可以在scandir之間檢索目錄中的文件的整個列表,而無需任何循環。

你(使用array_slice

2

http://www.php.net/scandir可能是爲了避免循環自己的最佳方式(使用array_filter)和限制檢索文件的數組,你可以將任何類型的篩選後。

如果你喜歡的話,還可以實現基本的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 
}