login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Recursief mappen uitlezen (Opgelost)

Offline Ultimatum - 26/03/2008 16:54 (laatste wijziging 26/03/2008 19:27)
Avatar van UltimatumPHP 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:
  1. <?php
  2. function readDirectory($directory) {
  3.  
  4. if($handle = @opendir($directory)) {
  5.  
  6. while(($file = readdir($handle)) !== false) {
  7.  
  8. if($file != '.' && $file != '..') {
  9.  
  10. if(is_dir($directory .'/'. $file)) {
  11.  
  12. readDirectory($directory .'/'. $file);
  13.  
  14. } else {
  15.  
  16. $dir = explode('/', $directory);
  17. $files[end($dir)][] = $directory .'/'. $file;
  18.  
  19. }
  20. }
  21. }
  22. }
  23.  
  24. closedir($handle);
  25.  
  26. echo '<pre>', print_r($files) ,'</pre>';
  27. return $files;
  28. }
  29.  
  30. $dir = $_SERVER['DOCUMENT_ROOT'] .'/projectbureau';
  31. readDirectory($dir);
  32.  
  33. #echo '<pre>', print_r(readDirectory($dir)) ,'</pre>';
  34. ?>


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.

  1. <?php
  2. function readDirectory($directory) {
  3.  
  4. if($handle = @opendir($directory)) {
  5.  
  6. while(($file = readdir($handle)) !== false) {
  7.  
  8. if(is_dir($directory .'/'. $file) && $file != '.' && $file != '..') {
  9.  
  10. $files[$file] = readDirectory($directory .'/'. $file);
  11.  
  12. } elseif($file != '.' && $file != '..') {
  13.  
  14. $files[] = $directory .'/'. $file;
  15.  
  16. }
  17. }
  18. }
  19.  
  20. closedir($handle);
  21.  
  22. #echo '<pre>', print_r($files) ,'</pre>';
  23. return $files;
  24. }
  25. ?>


Tutorial: http://www.phphulp.nl/php/tutorials/8/532/1354

0 antwoorden

Gesponsorde links
Er zijn nog geen reacties op dit bericht.
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.195s