Probleme de récursivité...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Probleme de récursivité...

par goeb » 28 avr. 2006, 16:35

salut,

pour créer le tableau dont tu parles, c'est facile :
$a = array('A'=>array('B'=>array('C'=>array('E','F','G'),'D'=>'H')));
tu peux aussi utiliser des classes. dans certains cas c'est pratique. Exemple :

class Noeud {
  var $nom;
  var $parent;
  var $fils = array();
  function Noeud($nom) {
    $this->nom = $nom;
  }
}

$a = new Noeud('A');
$a->fils[] = new Noeud('B'); // ajout d'un noeud fils, nommé 'B'
// etc...

print_r($a);

par Invité » 14 avr. 2006, 17:51

As-tu déjà commencé à travailler sur les "fonctions récursives" dont tu parles ? À mon avis, crée un tableau de test à la main et teste tes fonctions dessus. Je pense que tu t'apercevras qu'un tableau "plat" est plus pratique.
J'en suis à l'étape de prototypage justement. Mais je sais pas, pour moi le tableau hierarchique pour réprésenter une hierarchie allait de soi, par exemple ça te permet de compter en 1 passe le nombre d'enfants pour un niveau donné, de savoir si telle ou telle branche a un enfant, ...
Maintenant peut être que je n'ai pas effectivement saisi toutes les subtilités du modèle à plat...
Bon, si on prend la premiere opération a réaliser qui est l'affichage de la hierarchie sous forme HTML, via <ul>/<li>... J'imaginais que c'était plus simple a faire avec le 2nd tableau que le 1er, mais je n'ai pas encore codé la fonction, ct juste un feeling :)

par Hubert Roksor » 14 avr. 2006, 16:06

Mon problème est de gérer une hierarchie de produits [...] à l'affichage [...]
Le fait de stocker ces informations dans un tableau multi-dimensionnel ne t'aidera pas beaucoup, voire même le contraire.
faire du contrôle de cohérence dessus, etc...
J'ai bien peur de ne pas savoir ce que c'est.

As-tu déjà commencé à travailler sur les "fonctions récursives" dont tu parles ? À mon avis, crée un tableau de test à la main et teste tes fonctions dessus. Je pense que tu t'apercevras qu'un tableau "plat" est plus pratique.

par Invité » 14 avr. 2006, 15:39

La question que je me (et donc te) pose est: quelle est l'utilité de le transformer en tableau multidimensionnel ? PHP n'est pas particulièrement adapté à ce genre de données donc tu auras très certainement meilleur compte à garder tes données à plat pour les traiter.

Poste une description de ce que tu veux faire de tes données, je suis sûr que quelqu'un aura une bonne idée.
Mon problème est de gérer une hierarchie de produits (représentés par leurs identifiants - ici des lettres), aussi bien à l'affichage que pour pour faire du contrôle de cohérence dessus, etc...

Il est probablement plus facile aussi de jouer des fonctions recursives dessus une structure hierarchique...

Xos.

par Hubert Roksor » 14 avr. 2006, 05:37

La question que je me (et donc te) pose est: quelle est l'utilité de le transformer en tableau multidimensionnel ? PHP n'est pas particulièrement adapté à ce genre de données donc tu auras très certainement meilleur compte à garder tes données à plat pour les traiter.

Poste une description de ce que tu veux faire de tes données, je suis sûr que quelqu'un aura une bonne idée.

Probleme de récursivité...

par Invité » 13 avr. 2006, 19:13

Bonjour,

Voila mon problème: j'ai une hierarchie qui est stockée "à plat" dans ma base de données (cf. structure ci-dessous). Je souhaiterais convertir cette structure à plat en un tableau associatif multidimensionnel. Comment faire ?

Voilà ce que je récupère de ma base de données :

Code : Tout sélectionner

Array ( [0] => Array ( [ ] => A ) [1] => Array ( [A] => B ) [2] => Array ( [B] => C ) [3] => Array ( [B] => D ) [4] => Array ( [C] => E ) [5] => Array ( [C] => F ) [6] => Array ( [C] => G ) [7] => Array ( [D] => H ) )
En gros, je voudrais transformer ce tableau en :

Code : Tout sélectionner

Array ( [A] => Array ( [B] => Array ( [C] => Array ( [0] => E [1] => F [2] => G ) [D] => H ) ) )
c'est à dire array('A'=>Array('B'=>Array('C'=>Array('E','F','G'),'D'=>'H')));

Comment faire ?

Merci bcp pour votre aide !

Xos.