note 57804 added to ref.strings

From: Date: Fri, 14 Oct 2005 15:24:01 +0000
Subject: note 57804 added to ref.strings
Groups: php.notes 
Request: Send a blank email to php-notes+get-97025@lists.php.net to get a copy of this message
Updated; used to test for input as an array, should have been a string, added some validation of the input while I was at it. Enjoy. <?php /*---------- Directory Tree to Array ----------// Takes base directory, returns an associative array containing each directory name as an associative key and each file as an indexed entry in the appropriate directory. If no path is provided, it uses the current directory If $style == 1, it will return a sorted, non-associative array By Peter Dolan www.peterd.net Updated 2005-10-12 Use it as much as you like for whatever For my own entertainment, please let me know if you do //-----------------------------------------------------------*/ function dirTreeToArray( $path = "./", $style="0" ) { if ( !is_string($path) or !($style==0 or $style==1) ) die("Improper arguments in function dirTreeToArray(string \$path, \$style = {0, 1})"); else { $path = trim($path); $path = str_replace("\\", "/", $path); if( '/' == $path{strlen($path)-1} || '\'' == $path{strlen($path)-1} ) $path = substr($path, 0, strlen($path)-1); } $tree = array(); $arrayPointer = & $tree; if ( $handle = opendir($path) ) { while ( $fileName = readdir($handle) ) { if ( $fileName != "." and $fileName != ".." ) { $newPath = "$path/$fileName"; // Used for testing directory or file property if ( is_dir($newPath) ) { $dummyPointer = & $arrayPointer; // Save the current pointer if ( $style == 0 ) $arrayPointer = & $arrayPointer[$fileName]; // Drop the pointer into a subdirectory elseif ( $style == 1 ) $arrayPointer = & $arrayPointer[]; // Drop the pointer into a subdirectory $arrayPointer = dirTreeToArray($newPath, $style); // Process the new subdirectory if ( $style == 1 ) sort($arrayPointer); // Sort it if we're in a non-associative mode $arrayPointer = & $dummyPointer; // Bring the pointer back up a level } elseif ( is_file($newPath) ) $arrayPointer[] = $fileName; // Enter the files } } return $tree; } else die("Failed to open directory $path in function dirTreeToArray(string \$path, \$style = {0, 1})"); } ?> ---- Manual Page -- http://www.php.net/manual/en/ref.strings.php Edit -- http://master.php.net/manage/user-notes.php?action=edit+57804 Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+57804&report=yes&reason=added+to+the+manual Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+57804&report=yes&reason=bad+code Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+57804&report=yes&reason=spam Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+57804&report=yes&reason=useless Delete: non-english -- http://master.php.net/manage/user-notes.php?action=delete+57804&report=yes&reason=non-english Delete: already in docs -- http://master.php.net/manage/user-notes.php?action=delete+57804&report=yes&reason=already+in+docs Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+57804&report=yes Reject -- http://master.php.net/manage/user-notes.php?action=reject+57804&report=yes Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#97025) next »