PHP expert |
|
Ey, ik ben nu bezig met een backup systeem voor mijn projecten. Nu wil ik een map opgeven en dan moet hij alle mappen en bestanden in een array zetten. Het werkt nu wel aardig maar heb 2 problemen.
1. Per map komt er 1 array, dus als ik de array uitlees dan krijg ik alleen het laatste element. Dat per map 1 array komt is geen probleem maar ik wil graag dat al die arrays weer in 1 "hoofdarray" zitten ipv 25 losse.
2. Voor een submap van een submap komt er nu een losse array, ik had graag gehad dat die array in de array van de parentmap komt. Voorbeeldje:
Citaat: Array
(
[contact] => Array
(
[0] => D:/Program Files/xampp/htdocs/projectbureau/modules/contact/index.php
)
)
1
Array
(
[eerste-contact] => Array
(
[0] => D:/Program Files/xampp/htdocs/projectbureau/modules/eerste-contact/.tmp_eerste-contact.tpl~
[1] => D:/Program Files/xampp/htdocs/projectbureau/modules/eerste-contact/index.php
)
)
Zijn 2 mappen die in de map modules zitten, zou graag willen dat het zo word:
Citaat: [modules]
(
Array
(
[contact] => Array
(
[0] => D:/Program Files/xampp/htdocs/projectbureau/modules/contact/index.php
)
[eerste-contact] => Array
(
[0] => D:/Program Files/xampp/htdocs/projectbureau/modules/eerste-contact/.tmp_eerste-contact.tpl~
[1] => D:/Program Files/xampp/htdocs/projectbureau/modules/eerste-contact/index.php
)
)
1
Hoop dat ik duidelijk genoeg was . Trouwens in de eerste quote zie je 2 losse arrays, zo ziet alles bij mij eruit. Hoe kan ik zorgen dat het zoals de 2de quote is? Dus 1 hoofdarray en de rest als subarrays daarin?
Dit heb ik al zover:
<?php
function readDirectory($directory) {
if($handle = @opendir($directory)) {
while(($file = readdir($handle)) !== false) {
if($file != '.' && $file != '..') {
if(is_dir($directory .'/'. $file)) {
readDirectory($directory .'/'. $file);
} else {
$dir = explode('/', $directory);
$files[end($dir)][] = $directory .'/'. $file;
}
}
}
}
closedir($handle);
echo '<pre>', print_r($files) ,'</pre>';
return $files;
}
$dir = $_SERVER['DOCUMENT_ROOT'] .'/projectbureau';
readDirectory($dir);
#echo '<pre>', print_r(readDirectory($dir)) ,'</pre>';
?>
<?php function readDirectory($directory) { if($handle = @opendir($directory)) { while(($file = readdir($handle)) !== false) { if($file != '.' && $file != '..') { if(is_dir($directory .'/'. $file)) { readDirectory($directory .'/'. $file); } else { $files[end($dir)][] = $directory .'/'. $file; } } } } return $files; } $dir = $_SERVER['DOCUMENT_ROOT'] .'/projectbureau'; readDirectory($dir); #echo '<pre>', print_r(readDirectory($dir)) ,'</pre>'; ?>
De laatste print_r() geeft alleen maar de laatste array terug, wat ik dus niet wil. De print_r() binnen de functie geeft wel alles terug, maar wil dat ik ook alles buiten de functie te zien krijg.
Alvast bedankt.
Heb het nu opgelost dmv een tutorial van phphulp. Ik moest de directory ook in de array zetten en daar een nieuwe subarray aanmaken.
Dit is de functie zoals ik hem nu heb.
<?php
function readDirectory($directory) {
if($handle = @opendir($directory)) {
while(($file = readdir($handle)) !== false) {
if(is_dir($directory .'/'. $file) && $file != '.' && $file != '..') {
$files[$file] = readDirectory($directory .'/'. $file);
} elseif($file != '.' && $file != '..') {
$files[] = $directory .'/'. $file;
}
}
}
closedir($handle);
#echo '<pre>', print_r($files) ,'</pre>';
return $files;
}
?>
<?php function readDirectory($directory) { if($handle = @opendir($directory)) { while(($file = readdir($handle)) !== false) { if(is_dir($directory .'/'. $file) && $file != '.' && $file != '..') { $files[$file] = readDirectory($directory .'/'. $file); } elseif($file != '.' && $file != '..') { $files[] = $directory .'/'. $file; } } } #echo '<pre>', print_r($files) ,'</pre>'; return $files; } ?>
Tutorial: http://www.phphulp.nl/php/tutorials/8/532/1354
|