note 57804 added to ref.strings
| From: | php-general at lists dot php dot net | 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