login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Array loop

Offline Sar - 10/04/2011 16:14
Avatar van SarPHP interesse Hallo,

Ik ben bezig met een loop door een array heen (Om alles in de database te zetten), maar het wil me maar niet lukken.

De array:
  1. $array = array(
  2. '/' => array(
  3. 'test' => array(
  4. 'test.txt'
  5. ),
  6. 'test 3' => array(),
  7. 'test2' => array(
  8. 'test blaat' => array(),
  9. 'test.php'
  10. ),
  11. 'test2.php' => '',
  12. ),
  13. );


Zoals je waarschijnlijk begrijpt zijn de keys (arrays) folders en de values (geen arrays) files.

De loop functie:
  1. function loopArray($array){
  2. if(is_array($array)){
  3. foreach($array AS $path => $items){
  4. $files[$path] = array();
  5. if(is_array($items)){
  6. loopArray($items);
  7. }else{
  8. echo $path.'/'.$items;
  9. }
  10. }
  11. //return $files;
  12. }
  13. }


Maar het enige wat er op deze manier ge-echood wordt is:

0/test.php
test2.php/

Wat doe ik fout?

4 antwoorden

Gesponsorde links
Offline valles10 - 10/04/2011 16:43
Avatar van valles10 HTML interesse wrm tel je niet de arrays? en lees je ze zo uit?
Offline Sar - 10/04/2011 17:16
Avatar van Sar PHP interesse Hoe bedoel je dit? Heb je misschien een voorbeeld?
Offline valles10 - 10/04/2011 17:42
Avatar van valles10 HTML interesse
  1. <?php
  2. function loopArray($array){
  3. $arrays = count($array);
  4. for($i = 0;$i<$arrays;$i++){
  5. $count = count($array[$i]);
  6. for($ii = 0;$ii<$count;$ii++){
  7. echo $array[$i][$ii];
  8. }
  9. }
  10. }
  11.  
  12. $things = array(array("sam", "pieter", "kenzo"), array(21, 17, 39));
  13. loopArray($things);
  14. ?>
Offline Joost - 10/04/2011 23:38 (laatste wijziging 10/04/2011 23:39)
Avatar van Joost PHP expert Je moet in je recursieve functie een extra parameter meegeven die de directory bevat van het niveau van de array waar je op dat moment bent. Zoiets dus (uit de losse pols, niet getest):
[code=php]
function loopArray($fileArray, $rootPath = '/'){
$files = array();
foreach($fileArray AS $path => $files){
if(is_array($files)){
$files = array_merge($files, loopArray($files, $rootPath . $path . '/'));
} else {
$files[] = $rootPath . $path . '/' . $files;
}
}
return $files;
}
print_r( loopArray($fileArray['/']) );
[/CODE]
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.21s