Hallo medetweakers,
Ik zit met een probleempje waar ik zelf niet helemaal uitkom. Niet waarom een code niet werkt, maar hoe ik het volgende maak:
Ik wil de mappenstructuur van een vooraf gegeven in een array zetten. Klinkt makkelijk, valt in de praktijk behoorlijk tegen (mij iig). Als voorbeeld een mogelijke mappenstructuur:
Dit zou dan tot de volgende array moeten leiden:
De values van de array doen er niet zoveel toe, die gebruik ik toch niet.
Nu ben ik al vrij ver, dit is wat ik tot nu toe heb:
Nu gaat het dus fout als ik een map in een map in een map heb zitten. Dan zet hij die als item van de "hoofdarray", en niet als item van een "subarray", wat dus wel mijn bedoeling is.
Nu is mijn voornaamste vraag: hoe kan ik er voor zorgen dat hij een map in een map in een map wel in de juiste subarray zet. Maar, een andere vraag is nog: werk ik niet heel omslachtig en is er niet een heel andere, misschien veel makkelijkere, manier om de mappenstructuur in een array te krijgen ?
Ik hoop dat mijn probleem duidelijk is, maar als er nog vragen zijn dan hoor ik het graag
Alvast bedankt!
Ik zit met een probleempje waar ik zelf niet helemaal uitkom. Niet waarom een code niet werkt, maar hoe ik het volgende maak:
Ik wil de mappenstructuur van een vooraf gegeven in een array zetten. Klinkt makkelijk, valt in de praktijk behoorlijk tegen (mij iig). Als voorbeeld een mogelijke mappenstructuur:
code:
1
2
3
4
5
6
| - root - map 1 - submap1_1 - bestand1_1 - map 2 - submap 2_1 |
Dit zou dan tot de volgende array moeten leiden:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| Array ( [map 1] => Array ( [submap1_1] => 2 [bestand1_1] => 3 ) [map 2] => Array ( [submap2_1] => 2 ) ) |
De values van de array doen er niet zoveel toe, die gebruik ik toch niet.
Nu ben ik al vrij ver, dit is wat ik tot nu toe heb:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| function readFiles($dir = false, $depth = 0) { $dir = ($dir == true) ? $dir : $this->root; // is bij de eerste keer aanroepen het volledige pad $dirlist = scandir($dir); $dirlist = array_flip($dirlist); unset($dirlist['..']); unset($dirlist['.']); // Voor het verwijderen van de niet-bestaande mappen . en .. if ($depth == 0) { $this->scheme = $dirlist; } else { $no_root = substr(str_replace($this->root, '', $dir), 1, strlen($dir)); // verwijderen van het volledige pad + de laatste slash op het eind $dirs = explode('/', $no_root); // alle opeenvolgdende mappen in een array $array_index = $depth - 1; $this->scheme[$dirs[$depth - 1]] = $dirlist; // de dirlist van een submap toekennen aan een item van de array } foreach ($dirlist as $item => $value) { if (is_dir($dir.'/'.$item)) { $this->readFiles($dir.'/'.$item, $depth + 1); } } } |
Nu gaat het dus fout als ik een map in een map in een map heb zitten. Dan zet hij die als item van de "hoofdarray", en niet als item van een "subarray", wat dus wel mijn bedoeling is.
Nu is mijn voornaamste vraag: hoe kan ik er voor zorgen dat hij een map in een map in een map wel in de juiste subarray zet. Maar, een andere vraag is nog: werk ik niet heel omslachtig en is er niet een heel andere, misschien veel makkelijkere, manier om de mappenstructuur in een array te krijgen ?
Ik hoop dat mijn probleem duidelijk is, maar als er nog vragen zijn dan hoor ik het graag
Alvast bedankt!