Scandir最新文件在数组中有限制

时间:2014-04-12 20:00:53

标签: php arrays scandir

我已经制作了一个PHP脚本来扫描一个目录,它列出了一个数组中限制为20的所有文件名。现在它只显示数组的开头。因此,如果有40个文件,它只显示前0-20但我们需要20-40 ..有人可以帮助我吗?谢谢!

<?php

$files = glob('data/*.{png}', GLOB_BRACE);
usort($files, 'filemtime_compare');

function filemtime_compare($a, $b)
{
    return filemtime($a) - filemtime($b);
}

$i = 0;
$show = 20;
foreach($files as $file)
{
    if($i == $show) {
         break;
    } else {
         ++$i;
    }
    $var .= $file . "\n";

}
$fp = fopen("data.txt", "wb");
fwrite($fp, $var);  
fclose($fp);
echo $var;

?>

1 个答案:

答案 0 :(得分:0)

您可以使用array_chunk()将$ files数组拆分为20个文件的块。然后使用implode()将块中的值格式化为单个字符串。用这个替换foreach循环:

$show = 20;
$files = array_chunk($files, $show);
$page = 0; // page 0 is 0-19, page 1 is 20-39, etc.
$var = implode("\n", $files[$page]);

编辑:对于最后20个文件,您可以使用array_slice()

$files = array_slice($files, -20);
$var = implode("\n", $files);