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 :

Array Linéaire vers Array MultiDimensionnel (pour menu hiérarchique)


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Pymento
    Homme Profil pro
    Ingé. Info.
    Inscrit en
    Janvier 2008
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingé. Info.

    Informations forums :
    Inscription : Janvier 2008
    Messages : 366
    Par défaut Array Linéaire vers Array MultiDimensionnel (pour menu hiérarchique)
    Bonjour à tous d'abord, c'est la première fois que je poste sur un forum, j'espère que vous pourrez m'aider !
    Je vais tacher d'être le plus clair possible, mon problème:
    J'ai un tableau linéaire qui ressemble à ça
    Code x : 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
    [1] 
           => [root]= 1
           => [catégorie]= null
           => [sous-cat]= null
           => [Lien]= "" 
    
    [2] 
           => [root]= 2
           => [catégorie]= null
           => [sous-cat]= null
           => [Lien]= ""  
    
    [3] 
           => [root]= 2
           => [catégorie]= 1
           => [sous-cat]= null
           => [Lien]= ""  
    
    [4] 
           => [root]= 2
           => [catégorie]= 1
           => [sous-cat]= 1
           => [Lien]= ""  
    
    [etc...]
    c'est à peu prés ça, donc c'est pour gérer un menu par la suite avec une classe iterator, qui pourra comporter plusieurs catégories et sous-catégories.
    Je désire structurer mon tableau de façon hiérarchique comme un arbre
    donc un Array Multi-Dimensionnel, c'est à dire obtenir ce genre de résultat
    Code x : 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
    [1] 
           => [root]= 1
           => [catégorie]= null
           => [sous-cat]= null
           => [Lien]= "" 
    
    [2] 
           => [root]= 2
           => [catégorie]= null
           => [sous-cat]= null
           => [Lien]= ""  
                         =>
    
    
                        [1] 
                               => [root]= 2
                               => [catégorie]= 1
                               => [sous-cat]= null
                               => [Lien]= ""  
                                          =>
    
                                       [1] 
                                             => [root]= 2
                                             => [catégorie]= 1
                                             => [sous-cat]= 1
                                             => [Lien]= ""  
    
                        [2] 
                                 => [root]= 2
                                 => [catégorie]= 2
                                 => [sous-cat]= null
                                 => [Lien]= "" 
    
    
    [3] 
           => [root]= 3
           => [catégorie]= null
           => [sous-cat]= null
           => [Lien]= "" 
                         =>
                        [1] 
                                => [root]= 3
                                => [catégorie]= 1
                                => [sous-cat]= null
                                => [Lien]= ""

    J'ai essayé pas mal de trucs, notamment des iterators, des fonctions récursives des foreach enfin bref ça fait quelques jours que je bloque là dessus et je commence à perdre patience

    J' attend vos solutions avec le plus grand intérêt et vous remercie d'avance d'avoir pris le temps de lire mon post.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Bonjour,

    Que répresentent root, catégorie est sous-cat dans ton arborescence ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé Avatar de Pymento
    Homme Profil pro
    Ingé. Info.
    Inscrit en
    Janvier 2008
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingé. Info.

    Informations forums :
    Inscription : Janvier 2008
    Messages : 366
    Par défaut
    Root représente le numéro de la catégorie mère, catégorie est l'enfant de "root" quand à sous_cat , c'est l'enfant de catégorie. Le tableau est sur trois niveaux d'imbrication.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4
    Par défaut
    Salut
    En fait si je comprends bien tu veux en gros te retrouver avec un array comme ça :
    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
    Array(
        [0] => cat_1
        [1] => cat_2
        [2] => Array(
                 [0] => cat_2_1
                 [1] => Array
                         (
                          [0] => cat_2_1_1
                          )
                 )
        [3] => cat_3
        [4] => Array(
                 [0] => cat_3_1
         )
    )
    C'est bien ça ?

  5. #5
    Membre éclairé Avatar de Pymento
    Homme Profil pro
    Ingé. Info.
    Inscrit en
    Janvier 2008
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingé. Info.

    Informations forums :
    Inscription : Janvier 2008
    Messages : 366
    Par défaut
    Oui voila.

  6. #6
    Membre éclairé Avatar de Pymento
    Homme Profil pro
    Ingé. Info.
    Inscrit en
    Janvier 2008
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingé. Info.

    Informations forums :
    Inscription : Janvier 2008
    Messages : 366
    Par défaut
    J'ai vraiment besoin d'aide !
    je vais tacher d'étoffer mon post, voila une ancienne manière que j'avais pour remplir mon Array, mais l'imbrication est mauvaise.
    Je n'arrive pas a le traiter correctement par la suite

    Ici $csv_configCategoriesBoutique est un objet retourner par une fonction qui permet de lire un fichier csv(de type exel) il a trois colomnes
    ps:




    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
    //on saute la premiere ligne d'en tête pour ne récupérer que les valeurs
    $csv_configCategoriesBoutique->getRow()
    //Contruction d'un nouvel array dont les profondeurs sont définies par les "_"
    while ($row = $csv_configCategoriesBoutique->getRow()){
    	//affectation variable LINK
        $link=$this->linkModel($row,$boutique_url,$boutique_prefixe_tri,$boutique_suffixe_tri);
    	//le numero d'index des categories parent
    	$index=$row[0];
    	//le libelle de la categorie
    	$libelle=$row[1];
    	//le numero ebay de la categorie boutique
    	$numCat=$row[2];
    	//compte la quantité de underscores	dans la chaine de caracteres $index
    	$level = substr_count($index, '_');
    	//séparation des niveau de cat et on les range dans un tableau temp
    	$temp = explode('_', $index);
     
    	$level = substr_count($index, '_');
     
     
    	if($level===0){//c'est catégorie parent
    			$menu_array[$index]=array('cat_id'=>$index,"isChild"=>0, "sous_cat_id"=>false,"lib"=>$row[1],"cat_ebay"=>$row[2],"linkModel"=>$link,"child"=>false);
                  }elseif($level===1){//si il y a un _ c'est une sous catégorie
    		list($cat, $sous_cat) = explode('_', $index);
    		$menu_array[$cat]["child"][]=array('cat_id'=>$cat,"isChild"=>1 ,"sous_cat_id"=>$sous_cat,"lib"=>$row[1],"cat_ebay"=>$row[2],"linkModel"=>$link,"subChild"=>false);
    }elseif($level===3){
    list($cat,$sous_cat,$sous_sous_cat) = explode('_',$index); $menu_array[$cat][$sous_cat]['subChild'][]=array('cat_id'=>$cat,"isChild"=>1 ,"sous_cat_id"=>$sous_cat,"sous_sous_cat_id"=>$sous_sous_cat,"lib"=>$row[1],"cat_ebay"=>$row[2],"linkModel"=>$link);
    					}
    				}

    Désolé pour l'imbrication du code, j'ai pas pu mieux faire!

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

Discussions similaires

  1. Array dans un Array.. Dans un Array
    Par blinkman04 dans le forum Langage
    Réponses: 3
    Dernier message: 27/01/2014, 14h36
  2. array dans une proc report pour surligner certaines cellules
    Par debdev dans le forum ODS et reporting
    Réponses: 3
    Dernier message: 26/06/2009, 15h31
  3. Convertir un ArrayList vers Array
    Par Soulama dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 24/06/2009, 15h36
  4. conversion d'un Array List vers un type de donnée
    Par msahli3 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/03/2009, 17h44
  5. Array javascript vers php
    Par devadip dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/01/2008, 09h00

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