Revision: 9361
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at November 1, 2008 21:56 by iTony
Initial Code
<?php error_reporting(E_ALL); header('Content-Type: text/plain; charset=utf-8'); $dir = dirname(__FILE__).'/'; $tree = dir_tree($dir); print_r($tree); function dir_tree($dir) { static $tree = array(); static $child = false; // Detect the current branch to append files/directories to if ($child !== false && isset($tree[$child])) { $branch =& $tree[$child]; } else { $branch =& $tree; } // Force trailing slash on directory $dir = rtrim($dir, '/').'/'; $dirlen = strlen($dir); // Find files/directories $items = glob($dir.'*'); foreach($items as $key => $item) { // Get basename $base = pathinfo($item, PATHINFO_BASENAME); //substr($item, $dirlen); // always skip dot files if ($base[0] == '.') continue; // If file if(is_file($item) && is_readable($item)) { $branch[] = $base; $child = false; continue; } // If directory if(is_dir($item) && is_readable($item)) { // Dirty hack to get around PHP's numerical index rules if (ctype_digit($base)) $base = '~'.$base; $branch[$base] = array(); $child = $base; dir_tree($item); continue; } } // Only return from the root call if ($child === false) return $tree; }
Initial URL
Initial Description
Initial Title
Recursively traverse folders into a multidimensional array
Initial Tags
array, directory
Initial Language
PHP