删除重复的RecursiveIteratorIterator

时间:2011-05-13 10:16:24

标签: php

我正在考虑使用RecursiveIteratorIterator来显示“top-directories”,在我的示例布局和puffar中,但我无法让它工作。结构如下:

| images |
  => layout
       =>lab
  => puffar 

,结果是

layout
layout
layout
layout/lab
layout/lab
puffar
puffar


$directory = 'images';

    $it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory));

    while($it->valid()) {

    if (!$it->isDot()) {       
        echo $it->getSubPath() . "\n";       
    }

    $it->next();
    }

我无法工作的另一件事是我将目录路径更改为

$directory = 'newsletter.site.se/images';

它没有显示任何内容。 如果有人可以帮助我,那将是幻想。谢谢琳达

1 个答案:

答案 0 :(得分:2)

如果您只想显示顶级目录,是否真的需要RecursiveDirectoryIterator

相反,您可以使用:

<?php
foreach (new DirectoryIterator('.') as $entry) {
    if (!$entry->isDot() && $entry->isDir()) {
        echo $entry, '<br />';
    }
}

如果您想要所有目录,请尝试:(例如)

<?php
$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('.'), RecursiveIteratorIterator::SELF_FIRST);
foreach ($it as $entry) {
    if ($entry->isDir()) {
        echo $entry, '<br />';
    }
}

关于你的第二个问题,你有没有检查过这条路径是否正确且可读?