phprecursionrecursiveiterator

RecursiveIterator with directories in PHP


I want to list directories and files in directories like:

Array(
    [0] => 2014
    [1] => images
    [2] => videos
)

All of the directories in this array are in the "web_public" directory of my website. But there are some other directories within it which I don't want to read. The complete web_public is:

2014
images
videos
css
js
... and so on

Here is what I'm doing but doesn't work:

$objects = array();
foreach($dirs_to_read as $dir) {
    $dir = 'web_public/'.$dir;
    $objects = array_merge($objects, new RecursiveDirectoryIterator($dir));                
}   
$objects = new RecursiveIteratorIterator($objects);

Solution

  • From PHP 5 you can use RecursiveDirectoryIterator to get file array. For example:

    $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);
    

    Outputs something like:

    Array
    (
        [demo.php] => /path/tp/demo.php
    )