IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Construire un tableau de manière récursive


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 132
    Par défaut [Tableaux] Construire un tableau de manière récursive
    bonjour,

    je dois ecrire une fonction recursive en php qui me permet a partir d'un tableau a plat de recreer le tableau de maniere recursive

    en fait , je gere une arborescence de referentiels , chaque referentiel contient des chapitres qui contiennet a leur tour des paragraphes, sous paragraphes etc a autant de nieaux que l'on souhaite

    donc par exempke dans mon cas j'ai mon tableau a plat comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    array ( 
     
    [3] =>  array (doc2, doc3, doc6),
     
    [5] => array (doc 23),
     
    [7] => array( doc 12, doc 13 , ....)
     
    );
    en fait la tout est a plat les ids 3, 5, 7 representent des chapitres referentiel et paragraphes apr exemple, sans aucune notion de hierarchie entre eux , leurs ids sont recuperes dans une table appelee "standards" et qui contient a palt la liste de tous les ref, chap, para etc

    ma fonction , je sais pas trop comment m'y prendre

    je sais que on doit parcourir chaque niveau et regarder ses fils et ensuite pour chaque niveau lui rattacher la liste de ses documents sachant je crois que si un niveau n'a pas de fils et pas de documents , alors je saiss pas trop quoi faire


    voila mon debut de fonction

    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
     
     
    function get_standards_tree($tab, $level, $cur_id){
     
        foreach($tab[$level] as $block){
    	//on explore les fils
    	$tmp= get_org($tab,$level+1,$block['childs']);
    	$block['documents']= $tab[$block['id_standard']][];
     
     
    	for($i=0;$i<$level;$i++)
     
    	}
       }
    		return $tmp;
    }
    merci d'avance de me guider

  2. #2
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 132
    Par défaut
    bonjour

    en fait mon message precedent n'est pas bon car ma fonction je dois lui passer deux tableaux

    un talbeau qui contient tous les ids de referentiel, chapitre , paragraphe etc a plat avec pour chacun d'eux le tableau des documents qui leur sont rattachés

    et un second tableau qui lui est hierarchique et organisé en niveaux donc on a

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
     
    array (
     
    [niveau 0]  =>  array ( et la on a le tableau de tous les referentiels car ils sont de niveau 0),
     
    [niveau 1] => array (la on a le tableau de tous les chapitres),
     
    etc
    et donc en fait dans ma fonction je dois parcourir le tableau hierarchique et regarger a chauqe niveau si il y a des documents rattachés et les rattacher



    merci d'avance si quelq'un arrive a me guider

    en gros j'ai un tableau donnat la hierachie au sein des standards et un donnant la liste des documents rattaches a un id et il me faut combiner les deux pour avoir en resultat un tableau qui donne la hierarchie plus les documetns rattaches

  3. #3
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    C'est pas très clair ton problème... obligé de relire plusieurs fois pour essayer de comprendre ce que tu tentes de nous expliquer

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 132
    Par défaut
    je sais j'ai du mal , mais je m'ameliore

    vous vous rapplez hier du tableau que j'ai construit qui pour chaque chapitre donne un second tableau contenant la liste de tous les documents appartenant a ce chapitre

    en fait hier je n'avais pas exposé tout le probleme car en fait dans ma base de données , je n'ai pas que des chapitres mais des referentiels aussi dans lesquels justement s'incrivent ces chapitres et les chapitres contiennt des paragraphes etc ...

    donc le tableau que j'ai construit a plat me donnait pour chaque referentiel, chapitre , paragraphe, le tableau des documents qui y sont rattachés

    mais ce tableau etant a plat, il n'y a pas la notion de hierarchie a l'interieur et donc je cree un autre tableau qui lui contient justement tous les elements de niveau 0 cad les referentiels, puis tous les elements de niveuau 1 cad les chapitres etc....qui met en evidence cette notion de hierachie

    mon but maintenant est de combiner ces deux tableaux et de les faire passer en parametre d'une fonction qui va construire de maniere recursive un tableau hierarchique (c pour cela pour creer le talbeua resultat j'ai besoin en premier lieu du tableau 1 hierachique)contenant pour chauqe niveau la liste des documents qui sont attachés (ces documents que je recupere grace au second tableau plat)

    ma fonction commence comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    function get_standards_tree($tab1, $tab2, $level, $cur_id){
     
    if(!isset($tab1[$level]))
    return "";
     
    foreach($tab1[$level] as $block){
         if($block['parent_id']==$cur_id || $cur_id==NULL)
    	for($i=0;$i<$level;$i++)
    	     $tmp = get_standards_tree($tab1, $tab2, $level+1,$block['id'],);

  5. #5
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Le tableau donné en exemple dans ton message #2, c'est toi qui le construit ?

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 132
    Par défaut
    oui c'est moi qui le construit

    masi j'ai edite mon message 4 et j'ai mis le debut de ma fonction

    le tou c'est de savoir comment je fais car je veux pour chaque niveau parcourir ses fils et regarger si ils contiennent des documents , si ou ije les rattache et si non je ne sais pas quoi faire

  7. #7
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Si par exemple on a la structure suivante :
    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
     
    + Referentiel 1 #5
    |   + Chapitre A #6
    |   |   + paragraphe #11
    |   |   ` paragraphe #12
    |   ` Chapitre B #7
    |       + paragraphe #13
    |       ` paragraphe #14
    ` Referentiel 2 #8
        + Chapitre C #9
        |   + paragraphe #15
        |   ` paragraphe #16
        ` Chapitre D #10
            + paragraphe #17
            ` paragraphe #18
    A quoi vont ressembler tes deux tableaux ?

    Est-ce que tu connais la profondeur max de ton arborescence ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. création d'un tableau de manière récursive?
    Par maxwel56 dans le forum Langage
    Réponses: 7
    Dernier message: 17/05/2012, 13h54
  2. Réponses: 2
    Dernier message: 05/09/2008, 13h04
  3. Réponses: 4
    Dernier message: 29/02/2008, 17h14
  4. Réponses: 7
    Dernier message: 23/10/2006, 21h06
  5. [Tableaux] Construire un tableau compliqué
    Par Bomba dans le forum Langage
    Réponses: 5
    Dernier message: 08/06/2006, 16h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo