Diese Methode durchläuft mit Hilfe des DirectoryIterators rekursiv das angegebene Verzeichnis und gibt die Struktur in Form eines Arrays zurück.
Code:
function iterateDir($sPath)
{
$aRes = array();
foreach(new DirectoryIterator($sPath) as $oItem)
{
if($oItem->isDir())
{
(!$oItem->isDot() ? $aRes[$oItem->getFilename()] = iterateDir($oItem->getPathname()):0);
continue;
}
$aRes[] = $oItem->getFilename();
} return $aRes;
}
{
$aRes = array();
foreach(new DirectoryIterator($sPath) as $oItem)
{
if($oItem->isDir())
{
(!$oItem->isDot() ? $aRes[$oItem->getFilename()] = iterateDir($oItem->getPathname()):0);
continue;
}
$aRes[] = $oItem->getFilename();
} return $aRes;
}
Anwendungsbeispiel:
print_r(iterateDir('./test_dir'));
/*
* Ausgabe:
Array
(
[test] => Array
(
)
[0] => test_file.txt
[test_sub_dir] => Array
(
[0] => testfile1.txt
[1] => testfile2.txt
[test_sub_sub_dir] => Array
(
[0] => testfile.txt
)
)
)
*/
/*
* Ausgabe:
Array
(
[test] => Array
(
)
[0] => test_file.txt
[test_sub_dir] => Array
(
[0] => testfile1.txt
[1] => testfile2.txt
[test_sub_sub_dir] => Array
(
[0] => testfile.txt
)
)
)
*/