Question

I'm writing code that I'd like to recursively list directories. So far I've written code that lists level 1 directories. Does anyone have any ideas about how I can recurse infinitely?

$res = OC_Files::getDirectoryContent('');
$list = array();
foreach($res as $file) {
    if ($file['type'] == 'dir') {
        $res1 = OC_Files::getDirectoryContent('/'.$file['name']);
        foreach($res1 as $res2) {
            if ($res2['type'] == 'file') $list[] = $file['name'].'/'.$res2['name'];
        }

    } else $list[] = $file['name'];
}

foreach($list as $entry)
echo $entry.'</br>';
Was it helpful?

Solution

Try this:

function traverse_directory($dir) {
    $res = OC_Files::getDirectoryContent($dir);
    $list = array();
    foreach($res as $file) {
        if ($file['type'] == 'dir') {
            traverse_directory($dir . '/' . $file['name'])
        } else {
            $list[] = $file['name'];
        }
    }
    foreach($list as $entry) {
        echo $entry.'</br>';
    }
}

traverse_directory('');
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top