首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RecursiveIterator中包含目录的

RecursiveIterator中包含目录的
EN

Stack Overflow用户
提问于 2014-03-01 23:02:55
回答 2查看 122关注 0票数 0

我想列出目录中的目录和文件,如:

代码语言:javascript
复制
Array(
    [0] => 2014
    [1] => images
    [2] => videos
)

这个数组中的所有目录都在我的网站的"web_public“目录中。但是其中还有一些我不想读的目录。完整的web_public是:

代码语言:javascript
复制
2014
images
videos
css
js
... and so on

以下是我正在做但不起作用的事情:

代码语言:javascript
复制
$objects = array();
foreach($dirs_to_read as $dir) {
    $dir = 'web_public/'.$dir;
    $objects = array_merge($objects, new RecursiveDirectoryIterator($dir));                
}   
$objects = new RecursiveIteratorIterator($objects);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-01 23:10:06

从PHP5中,您可以使用RecursiveDirectoryIterator获取文件数组。例如:

代码语言:javascript
复制
$path = __DIR__;

$directory = new \RecursiveDirectoryIterator(
    $path,
    RecursiveDirectoryIterator::SKIP_DOTS
    | RecursiveDirectoryIterator::CURRENT_AS_PATHNAME
    | RecursiveDirectoryIterator::KEY_AS_FILENAME
);

$iterator = new \RecursiveIteratorIterator($directory);
$array    = iterator_to_array($iterator);

print_r($array);

输出的内容如下:

代码语言:javascript
复制
Array
(
    [demo.php] => /path/tp/demo.php
)
票数 1
EN

Stack Overflow用户

发布于 2014-03-01 23:21:38

这就需要使用AppendIterator。示例用法:

代码语言:javascript
复制
$ai = new AppendIterator;
foreach( $dirs_to_read as $dir )
{
    // append RecursiveDirectoryIterator (wrapped in RecursiveIteratorIterator)
    // you need RecursiveIteratorIterator as well,
    // to iterate all depths of the RecursiveDirectoryIterator, in one go
    $ai->append( new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator( 'web_public/' . $dir ),
        RecursiveIteratorIterator::SELF_FIRST
    ) );
}

// iterate the AppendIterator
foreach( $ai as $file )
{
    /* do something with the file (which is an SplFileInfo instance) */
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22121573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档