【问题标题】:Php DirectoryIterator load range of files from folderPhp DirectoryIterator 从文件夹加载文件范围
【发布时间】:2019-10-26 22:00:08
【问题描述】:

我正在使用 DirectoryIterator 从目录中加载 mp3 文件。我想知道我可以加载某个范围吗?例如只检索 10 个文件?然后在每个新请求中检索下一个 10 等等。我怎么能做到这一点?我会使用自己的计数器还是 DirectoryIterator 有一些选择?如果我使用自己的计数器,我将如何确保结果不会以某种方式受到损害,例如文件返回的排序方式可能不同?

$di = new DirectoryIterator($dir);
foreach ($di as $fileinfo) {


}

【问题讨论】:

    标签: php range scandir


    【解决方案1】:

    您可以计算自己并使用方法 next() 和 current()。 end 还必须使用 valid() 进行自我检查。

    Foreach 总是从头开始返回所有元素。

    $di = new DirectoryIterator(__DIR__);
    
    for($i=0; $i<5 AND $di->valid();$i++, $di->next()){
      echo $di->current()->getFilename()."<br>";
    }
    
    //next 5 files
    for($i=0; $i<5 AND $di->valid();$i++, $di->next()){
      echo $di->current()->getFilename()."<br>";
    }
    

    【讨论】:

    • 如果 DI 总是从目录中返回所有文件,那么最好将所有文件存储在 javascript 数组中(无论如何我都使用过),然后在需要时在 javascript 中操作 next 不是更好吗?为什么我要使用带有 next 和 current 的 php,这有什么优势?或者我使用 use scandir,否则我能从中受益吗?
    • 您的问题与 DirectoryIterator 有关。毫无疑问,有更简单的解决方案。您可以使用 glob ("*.Mp3"),然后使用 array_chunk() 拆分提供的数组。
    • 我知道如何操作数组和从 php 返回的结果。我只是想知道我可以从目录中获取部分文件(如果里面有很多文件,可以加快这个过程)。如果 DI 总是返回所有文件,那么我的猜测是,如果我将所有文件提取到 javascript 中并从那里操作它们(而不是再次调用 php),那么性能没有任何好处。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    • 2020-07-16
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多