|
Posted by frizzle on 11/27/07 19:25
Hi there,
I have a function to create an array of all files in a certain folder,
so i can display the structure.
The actual function is below the message, as is an example of its
output.
As one can see, the filesize is also stored in the array (more info
will be added, like filemtime),
what i need is to sum all bytes per folder.
So if i have e.g.
- folder_1_level1 -> size file 1 / 96
* file_1
* file_2
- folder_1_level2 -> size file 3, 4, 7, 8, 9
* file_3
* file_4
- folder_1_level3 -> size file 7, 8, 9
* file_7
* file_8
* file_9
- folder_2_level2 -> size file 5, 6
* file_5
* file_6
The latter should give me the sum of all filesizes in there,
folder_level2 should give me folder_level3's size PLUS other files/
folders that are in folder_level2, and then, folder_level1 should have
the size of all files in there down the entire tree.
I hope it's clear and that someone can help me.
Cheers.
*** FUNCTION CODE ***
function mapit( $dir = '.', $loop = 0, $parent = false ){
$handle = @opendir( $dir );
while( ( $file=readdir( $handle ) ) !== false ){
if( $file != '.' && $file != '..' ){
$point = $dir."/".$file;
$fileSize = filesize( $dir.'/'.$file );
if( is_dir( $point ) )
$info['dirs'][$file] = mapit( $point , $loop+1, $file );
else
$info['files'][$file] = $parent.' -> '.$fileSize;
}
}
return $info;
}
$structure = mapit();
print_r( $structure );
*** /FUNCTION CODE ***
*** RESULT EXAMPLE ***
Array
(
[dirs] => Array
(
[upload] => Array
(
[files] => Array
(
[index.htm] => upload -> 1391
[index.php] => upload -> 23
[upload.php] => upload -> 7733
)
[dirs] => Array
(
[img] => Array
(
[files] => Array
(
[0.jpg] => img -> 36866
[12.jpg] => img -> 218
[13.jpg] => img -> 36866
)
)
)
)
[files] => Array
(
[dirs] => Array
(
[just-a-dir] =>
[images] => Array
(
[files] => Array
(
[lion.jpg] => flip ->
350398
)
)
)
[files] => Array
(
[logo.pdf] => files -> 157764
[tiger.jpg] => files -> 350398
)
)
)
[files] => Array
(
[ftp.php] => -> 10238
[cats.php] => -> 8237
)
)
*** /RESULT EXAMPLE ***
Navigation:
[Reply to this message]
|