Bonsoir,
je viens vers vous car me voilà bloqué avec une boucle foreach... je ne sais pas comment la manipuler correctement.
Voila ma problématique :
Je manipule des catégories (d'article) classées hiérarchiquement.
Dans un array sont stockées les ID de catégories (d'article) auxquel sont associé leur parent.
Pour faire simple, petit schéma :
C'est stocké dans mon array comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 1 --> Catégorie maitre (pas de parent) =2 --> Sous catégorie (à pour parent 1) =3 --> Sous catégorie ==5 --> Sous-sous catégorie (à pour parent 3) =4 --> Sous catégorie ==6 --> Sous-sous catégorie (à pour parent 4)
[id] => parent
Je souhaite connaitre les tous enfants d'un ID donné ($var) selon une profondeur donnée ($profondeur) et que cela s'adapte a n'importe quel profondeur de hiérarchie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $arrayInit = Array ( [1] => 0 [2] => 1 [3] => 1 [4] => 1[5] => 3 [6] => 4);
Si $var = 1 et profondeur='all' alors mon résultat -> array(2,3,4,5,6)
Si $var = 1 et profondeur=1 alors mon résultat -> array(2,3,4)
Si $var = 3 et profondeur=1 alors mon résultat -> array(5)
Je sais que je dois utiliser plusieurs array "temporaire" mais ne sait pas ou les placer.
Voilà mes avancées.
Je me perd dans toutes ces boucles et n'arrive plus a savoir comment faire.
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 $arrayTemp = array(); for($i=0;$i < $profondeur;$i++) { foreach($arrayInit as $row => $valeur) { if($i == 0) $valeurTest = $var; else $valeurTest = $reschild[$i-1]; if ($valeur == $valeurTest) { array_push($arrayFinal,$row); array_push($arrayTemp,$row); } } } print_r($arrayFinal);
D'avance je vous remercie de votre aide.
Partager