Bonjour à tous!
Je peine à transformer un fichier "plat" en une structure de données de type arbre.
Imaginons une commande tree qui affiche le contenu d'un répertoire de manière récursive sous cette forme:
+rep1
|
|--+ rep1.1
| |
| |---+ rep 1.1.1
| |
| + rep1.2
|
|
+rep2
A partir de cette affichage, j'arrive assez facilement à créer un tableau de la forme:
où rank est ici le nombre de fois où je trouve le caractère '+' afin de hiérarchiser ces répertoires.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $dir = array( array("rank"=> 0, "rep"=> "rep1"), array("rank"=> 1, "rep"=> "rep1.1"), array("rank"=> 2, "rep"=> "rep1.1.1"), array("rank"=> 1, "rep"=> "rep1.2"), .... )
Je me demande quelle est la meilleure manière de traiter ce genre de données si je souhaite créer par la suite un tableau de la forme:
J'ai essayé en de la manière suivante mais ça ne fonctionne pas super...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 $dir = array( "rep1" => array( "rep1.1"=>array( ... ), "rep1.2" => array( ) )...
Des idées sur la manière de procéder?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 function parse($csv){ $z = sizeof($csv); $return = array(); for($i=0;$i<$z;$i++){ $A = explode(';',$csv[$i]); if(isset($csv[$i-1])){ $B = explode(';',$csv[$i-1]); $rank_b = $B[0]; $command_b = $B[1]; } $rank = $A[0]; $command = $A[1]; if($rank > 1){ $return[$rank_b][$command_b][] = array( "command" => $command ); } else { $return[$rank][$command] = array( "command" => $command ); } } header('Content-type: application/json'); echo json_encode($return); }
Partager