Bonjour,

J'ai posté une question il y a quelques jours pour lire un tableau de manière récursive. On m'a suggéré d'utiliser Recursive iterator mais que je ne peux appliquer dans mon cas car les enfants ne sont pas de nouveaux tableaux (je ne peux pas modifier ça.)

Voici mon tableau à traiter :
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
Array
(
    [0] => Array
        (
            [Calcul] => Array
                (
                    [id] => 1
                    [nom] => Gros cacul maitre
                    [comptes] => 
                    [order] => 0
                    [parent_id] => 
                    [groupe_id] => 3
                    [lft] => 1
                    [rght] => 8
                )
 
            [children] => Array
                (
                    [0] => Array
                        (
                            [Calcul] => Array
                                (
                                    [id] => 2
                                    [nom] => Calcul moyen 2
                                    [comptes] => 
                                    [order] => 0
                                    [parent_id] => 1
                                    [groupe_id] => 3
                                    [lft] => 2
                                    [rght] => 5
                                )
 
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [Calcul] => Array
                                                (
                                                    [id] => 4
                                                    [nom] => Enfant du calcul moyen
                                                    [comptes] => 
                                                    [order] => 0
                                                    [parent_id] => 2
                                                    [groupe_id] => 3
                                                    [lft] => 3
                                                    [rght] => 4
                                                )
 
                                            [children] => Array
                                                (
                                                )
 
                                        )
 
                                )
 
                        )
 
                    [1] => Array
                        (
                            [Calcul] => Array
                                (
                                    [id] => 3
                                    [nom] => Calcul moyen 2 encore
                                    [comptes] => 
                                    [order] => 0
                                    [parent_id] => 1
                                    [groupe_id] => 3
                                    [lft] => 6
                                    [rght] => 7
                                )
 
                            [children] => Array
                                (
                                )
 
                        )
 
                )
 
        )
 
)
Voici la fonction sur laquelle je bloque
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
 function Childscalc($calculs, $newtab = array(), $child){
		foreach($calculs as $i => $calcul){
			echo $child.' <br />';
			if($child == 'yes'){
					$_SESSION['newtab'][$_SESSION['k']-1]['childs'][$_SESSION['j']]['nom'] = $calcul['Calcul']['nom'];
					$_SESSION['newtab'][$_SESSION['k']-1]['childs'][$_SESSION['j']]['comptes'] =  $calcul['Calcul']['comptes'];
					$_SESSION['j']++;
 
			} else {
				$_SESSION['newtab'][$_SESSION['k']]['nom'] = $calcul['Calcul']['nom'];
				$_SESSION['newtab'][$_SESSION['k']]['comptes'] =  $calcul['Calcul']['comptes'];
				$_SESSION['k']++;
			}
 
			if(!empty($calcul['children'])){
					['childs'] = array();
					$_SESSION['childs'] = 'yes';
					$this->Childscalc($calcul['children'], $_SESSION['newtab'], $_SESSION['childs']);
					unset($_SESSION['childs']);
 
			} else {
				$_SESSION['childs'] = 'no';
			}
		}
		return $_SESSION['newtab'];
	}
La logique ne me semble pas loin d'être bonne Mon problème vient du fait que je n'arrive pas à écrire correctement mon tableau... J'arrive à créer une premier niveaux pour les enfants et il faudrait que je puisse aller plus loins dans la récursivité... Si quelqu'un à une idée... Merci