Reply to Re: Directory Recursion and Multidimensional Arrays

Your name:

Reply:


Posted by Oli Filth on 09/26/06 15:03

Tyrone Slothrop said the following on 25/09/2006 19:24:
> I have created a script which recurses a display of directories like
> so:
>
> <?
> $dir = "/path/to/base/directory";
> function scan_dir_recurse ($dir,$tab)
> {
> global $fileArr;
> $tab++;
> if ($tab > 4) { exit ("Tab length exceeded."); }
> $files = scandir($dir);
> for ($i=0; $i<count($files); $i++)
> {
> if ($files[$i] != '.' && $files[$i] != '..')
> {
> echo str_repeat(" ", $tab-1).$files[$i]."\n";
> if (is_dir($dir.'/'.$files[$i]))
> {
> scan_dir_recurse ($dir.'/'.$files[$i],$tab);
> }
> }
> }
> }
> scan_dir_recurse($dir,0);
> ?>
>
> What is want to do is generate a multidimensional array which will be
> accessable on a DHTML page of select boxes where, a user first selects
> a top directory, then a select box appears of directories under it,
> etc. until a list of available files is available.
>
> For example:
> $fileArr[0] = 'dir1';
> $fileArr[0][0] = 'dir2';
> $fileArr[0][0][0] = 'dir3';
> $fileArr[0][0][0][0] = 'a_file';
>
> The solution to adding another level of recursion to the array escapes
> me at the moment. Any ideas?

You can't have it exactly as you demonstrate above, because that would
mean that $fileArr[0] would have to be a string ('dir1') and an array
(the sub-array) simultaneously. A couple of suggestions:

1. In each array (or sub-array), have $array[0] be the directory name,
and then $array[1], $array[2], ... be the sub-arrays.

2. Have each element of the array be a class object, e.g.:

class Directory
{
public $name;
public $contents;
}

where $contents is an array of child Directory objects.


As for implementation, you will need to add an extra argument to the
scan_dir_recurse() function, which you will use to pass the current
parent directory object. Then scan_dir_recurse can add child objects to
it as it finds them.


--
Oli

[Back to original message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация