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] Affichage d'un tableau multi-dimensionel


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 114
    Points : 56
    Points
    56
    Par défaut [Tableaux] Affichage d'un tableau multi-dimensionel
    Bonjour,

    j'ai un tableau à 6 dimenssions
    Je voudrais savoir comment faire pour pouvoir afficher ce tableau sous forme d'arborescence avec la possibilité d'etendre les différents niveau?

    Pouvez vous me donnez des conseils sur la façon de faire.
    Il faut également que j'affiche le nombre d'élément qu'il y a bas de l'arborescence (les feuilles de l'arbre).
    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    a-
       b-
          f-
          g-
       c-
          d-
          e-
    h-
      i-
    si j'affiche 'a' je veux 4 en face correspondant à f,g,d,e
    si j'affiche 'h' je veux 1 en face correspondant à i
    etc ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    a+ 4
    h+ 1
     
    et 
    a-
      b+ 2
      c+ 2
    h+

  2. #2
    Expert éminent 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
    Points : 6 449
    Points
    6 449
    Par défaut
    Début de piste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function afficher($prefixe, $key) {
       echo $prefixe . $key . '<br />';
    }
    function affiche_tab_recur($tab, $prefixe) {
       foreach($tab as $key => $sstab) {
          afficher($prefixe, $key);
          affiche_tab_recur($sstab, $prefixe .'   ');
       }
    }
     
    affiche_tab_recur($mon_tablo, '');

  3. #3
    Membre averti Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Points : 353
    Points
    353
    Par défaut
    Méthode proposé par Doof dans le tips Vos meilleurs scripts de ce meme forum ...
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    function array_show($tabl) 
    { 
       static $taille; 
       echo "<table border=1 cellspacing=0 cellpadding=0 $taille>"; 
       if (is_array($tabl)) { 
          $nbclées=sizeof($tabl); 
          $keyscol=array_keys($tabl); 
          $firstcol1=$keyscol[0]; 
          $test2d=$tabl[$firstcol1]; 
          if (is_array($test2d)) { 
             echo "<tr><td bgcolor=efeffb><b>clés</b></td>"; 
             foreach ($tabl as $clee => $valeur) { 
                echo "<td align=center bgcolor=efeffb><b> $clee </b></td>"; 
             } 
             echo "<tr>"; 
             foreach ($tabl[$firstcol1] as $ligne => $valeur) { 
                echo "<tr><td align=center bgcolor=efefef><b>$ligne</b></td>"; 
                foreach ($tabl as $col => $val) { 
                   $case=$tabl[$col][$ligne]; 
                   if (is_array($case)) { 
                      $taille="width=100% height=100%"; 
                      echo "<td>"; 
                      array_show($tabl[$col][$ligne]); 
                      echo "</td>"; 
                   } 
                   else { 
                   echo "<td align=center>".$case."</td>"; 
                   } 
                } 
                echo "</tr>"; 
             } 
          } 
          else { 
             foreach ($tabl as $clee => $value) { 
                if (!is_array($value)) { 
                   echo "<tr><td align=center bgcolor=efefef width=15><b> $clee </b></td><td align=center>$value</td>"; 
                } 
                else { 
                   $taille="width=100% height=100%"; 
                   echo "<td bgcolor=efeffb align=center colspan=2><b>$clee</b></td>"; 
                   array_show($tabl[$clee]); 
                   echo "</td>"; 
                } 
                echo "</tr>"; 
             } 
          } 
       } 
       else { 
          echo "$tabl (variable simple)<br><br>"; 
       } 
       echo "</table>"; 
       $taille=""; 
    }

  4. #4
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <html>
    	<head>
    		<title>tableaux</title>
    		<style type='text/css'>
    			.case{
    				margin-left: 30px;
    			}
    			.liens{
    				text-decoration: none;
    			}
    		</style>
    		<script type='text/javascript'>
    			function swap(elem){
    				leparent = elem.parentNode;
    				disp = 'none';
    				if(elem.firstChild.innerHTML == '-'){
    					elem.firstChild.innerHTML = "+";
    					elem.lastChild.style.display = 'inline';
    				}
    				else{
    					elem.firstChild.innerHTML = "-";
    					elem.lastChild.style.display = 'none';
    					disp = 'block';
    				}
    				for(var i=1;i<leparent.childNodes.length;i++){
    					leparent.childNodes[i].style.display = disp;
    				}
     
    			}
    			window.onload = function(){
    				liens = document.getElementsByName('lesliens');
    				for(var i=0;i<liens.length;i++)
    					swap(liens[i]);
    			}
    		</script>
    	</head>
    	<body>
    	<?
    		function affiche($tab){
    				foreach($tab as $key => $value){
    					echo "<div class='case'>";
    					echo "<a href='#' class='liens' name='lesliens' onclick='swap(this)'><span>-</span>&nbsp;",$key,"&nbsp;<span class='count'>(",is_array($value) ? count($value) : "1",")</span></a>";
    					if(is_array($value))
    						affiche($value);
    					else
    						echo "<div class='case'>",$value,"</div>";
    					echo "</div>";
    				}
    		}
     
    		$montab = array("a" => array("b" => array("f" => "bla","g" => "bla"), "c" => array("d" => "bla","e" => "bla")),"h" => "bla");
    		affiche($montab);
    	?>
    	</body>
    </html>

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 114
    Points : 56
    Points
    56
    Par défaut
    merci

    je vais regarder tout ceci

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 114
    Points : 56
    Points
    56
    Par défaut
    Merci siddh,
    c'est ce qu'il me faut.
    je n'ai plus qu'a faire la mise en page voulu

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

Discussions similaires

  1. [Tableaux] Affichage d'un tableau récursif
    Par R'SKaP dans le forum Langage
    Réponses: 3
    Dernier message: 06/02/2007, 14h48
  2. [Tableaux] Tri d'un tableau multi-dimensions
    Par lodan dans le forum Langage
    Réponses: 6
    Dernier message: 05/12/2006, 10h08
  3. [Tableaux] affichage d'un tableau
    Par patbeautifulday1 dans le forum Langage
    Réponses: 4
    Dernier message: 23/05/2006, 15h40
  4. [Tableaux] tri sur un tableau multi-dimensionnel
    Par nicoaix dans le forum Langage
    Réponses: 1
    Dernier message: 12/04/2006, 21h23
  5. Réponses: 3
    Dernier message: 24/02/2006, 10h22

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