Get a (recursive) directory listing in an array. Directory's are included in this list. If this behavior is not wanted, remove the two lines:
$file = $directory . "/" . $file; $array_items[] = preg_replace("/\/\//si", "/", $file);
To get a non recursive directory listing, use it like this:
$files = directoryToArray("./", false);
And to get a recursive directory listing, use it like this:
$files = directoryToArray("./", true);
Once you have an array of files, you can iterate over the directories/files like this:
echo '<ul>'; foreach ($files as $file) { echo '<li>' . $file . '</li>'; } echo '</ul>';
or like this:
echo '<ul>'; for ($i = 0; $i <= count($files); $i++) { echo '<li>' . $files[$i] . '</li>'; } echo '</ul>';
Code:
function directoryToArray($directory, $recursive) { $array_items = array(); if ($handle = opendir($directory)) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { if (is_dir($directory. "/" . $file)) { if($recursive) { $array_items = array_merge($array_items, directoryToArray($directory. "/" . $file, $recursive)); } $file = $directory . "/" . $file; $array_items[] = preg_replace("/\/\//si", "/", $file); } else { $file = $directory . "/" . $file; $array_items[] = preg_replace("/\/\//si", "/", $file); } } } closedir($handle); } return $array_items; }
Hope someone can use it!