On Tue, 2009-08-25 at 12:06 +0200, Ralph Deffke wrote: > I would say > foreach( $dirTree as $key => $value ){ > echo $key ."<br>"; > foreach( $value as $v){ > echo $v ."<br>; > } > } > > something like that > > ralph_deffke@xxxxxxxx > "Tom Chubb" <tomchubb@xxxxxxxxx> wrote in message > news:4577934f0908250241i195dc691x3f8c552e72791f4e@xxxxxxxxxxxxxxxxx > Hi gang, > I'm trying to create a script to read the files in a folder (approx > 2000) and get the filename, path and last modified date in a tabulated > format to copy into excel. (We have been issued a CD and need to get > all files documented and assigned to an owner.) > > I've tried loads of different scripts but can't get them working with > all the features. > I think the best one to work with is this (although I'm having > problems getting the date but don't worry about that at the moment) > > <? > error_reporting(E_ALL); > ini_set('display_errors', true); > function getDirectory($path = '.', $ignore = '') { > $dirTree = array (); > $dirTreeTemp = array (); > $ignore[] = '.'; > $ignore[] = '..'; > > $dh = @opendir($path); > > while (false !== ($file = readdir($dh))) { > > if (!in_array($file, $ignore)) { > if (!is_dir("$path/$file")) { > > $dirTree["$path"][] = $file; > > } else { > > $dirTreeTemp = getDirectory("$path/$file", $ignore); > if (is_array($dirTreeTemp))$dirTree = > array_merge($dirTree, $dirTreeTemp); > } > } > } > closedir($dh); > > return $dirTree; > } > > $ignore = array('.htaccess', 'error_log', 'cgi-bin', 'php.ini', > '.ftpquota'); > > $dirTree = getDirectory('./Tender', $ignore); > ?> > <pre> > <? > print_r($dirTree); > ?> > </pre> > > <?php > getdirectory('./Tender'); > //or > //get_dir_iterative(/*etc.*/); > ?> > > > > > > > Here is an example of what I'm getting out from the $dirTree array: > > Array > ( > [./Tender] => Array > ( > [0] => 9216_100_REV_V1.0_bound.dwg > ) > > > [./Tender/Tender Docs] => Array > ( > [0] => BAA Works Terms v1.1 (22.05.08).pdf > [1] => Contents of Volumes 1 and 2.pdf > [2] => Cover Letter and Instructions.doc > > [3] => Form of Tender.doc > ) > > [./Tender/Tender Docs/Health and Safety Questionnaire] => Array > ( > [0] => NT Baggage Tender Questionaire rev2.xls > ) > > > [./Tender/Tender Docs/NTB BH Lighting] => Array > ( > [0] => 3J-B-1 PIR.xls > [1] => 3J-B-2B PIR.xls > [2] => 3J-B-2R PIR.xls > [3] => 3J-B-3R PIR.xls > > [4] => 3J-D PIR.xls > [5] => 4G-G PIR.xls > [6] => 4J-B-1B PIR.xls > [7] => 4J-B-1R PIR.xls > [8] => 4J-B-2B PIR.xls > [9] => 4J-B-2R PIR.xls > > [10] => 4J-B-4 PIR.xls > [11] => 5G-G PIR.xls > ) > > I'm having problems getting my head round how to get access the array > data so that I can format it how I want, eg: > > Folder Filename > Tender 9216_100_REV_V1.0_bound.dwg > Tender/Tender Docs BAA Works Terms v1.1 (22.05.08).pdf > Tender/Tender Docs Contents of Volumes 1 and 2.pdf > > etc. > > I'm trying to do this at work (php is a hobby and this is the first > time I've tried to use it in my electrical engineering job) in notepad > without any code highlighting, etc. and tearing my hair out to try and > avoid going through the CD manually! > > Could anybody please help or let me know which function I need to read > up on? I've tried countless searches on array formatting, etc and not > getting anywhere. > > Thanks in advance, > > Tom > > > Funnily enough, I've had to dust off an old function I wrote for this sort of thing this very morning: function dirTree($dir) { $dirs = Array(); if($dh = opendir($dir)) { $dirCount = 0; while(false !== ($file = readdir($dh))) { // ignore the pseudo . and .. directories if( $file == '.' || $file == '..') { continue; } $path = str_replace('//', '/', "$dir/$file"); if(is_dir($path)) { $dirs[$path] = dirTree($path); $dirCount ++; } if(is_file($path) ) { // process this file } } if($dirCount > 0) { return $dirs; } else { return false; } } else { return false; } } $dir = "/home/user/Documents/"; $tree = dirTree($dir); The array $tree is a multidimensional array which should make sense to look at if you do a print_r() on it! The code looks a bit messy, and could be improved probably a dozen ways, but it does work, and is very easy to mess around with. Thanks, Ash http://www.ashleysheridan.co.uk -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php