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 :

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)
C'est stocké dans mon array comme ceci :
[id] => parent

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);
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.

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.

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);
Je me perd dans toutes ces boucles et n'arrive plus a savoir comment faire.
D'avance je vous remercie de votre aide.