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 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
function clevide($tab2,$col){
foreach($tab2 as $keyvide => $val){
$large=80;
//test si la cle est differente de vide
if($keyvide!=''){
$col2=7-$col;
//affichage
echo "<tr>";
echo "<td colspan='".$col."' width='".(($col*$large)+10)."' class='TabBas'> </td>";
echo "<td colspan='".$col2."' width='".(($col2*$large)+140)."' class='TabBas'>".$keyvide." ".$val."</td>";
echo "</tr>";
}else{
if(is_array($val)){
clevide($val,$col+1);
}
}
}
}
//calcule le nombre d'abonné en fin d'arbre, est appelée à chaque changement de branche
function calc_nb_abo($tab){
foreach($tab as $key => $value)
{
if(is_array($value)){
$nb_abo=calc_nb_abo($value);
}else{
$nb_abo++;
}
}
return $nb_abo;
}
//affichage tableau multi-dimension
function affiche($tab,$col){
//parcours du tableau
foreach($tab as $key => $value)
{
$large=80;
$col2=7-$col;
//affichage du lien vers le niveau suivant si la cle n'est pas vide et que sa valeur est un tableau
if($key!='' && is_array($value)){
$nb=calc_nb_abo($value);
echo "<tr>";
echo "<td colspan='".$col."' width='".(($col*$large)+10)."' class='TabBas'> </td>";
echo "<td colspan='".$col2."' width='".(($col2*$large)+140)."' class='TabBas'>";
echo $key." (".$nb.") ";
echo "</td></tr>";
//sinon on affiche seulement la cle
}elseif($key!='' && !is_array($value)){
echo "<tr>";
echo "<td colspan='".$col."' width='".(($col*$large)+10)."' class='TabBas'> </td>";
echo "<td colspan='".$col2."' width='".(($col2*$large)+140)."' class='TabBas'>";
echo $key;
echo " ".$value."</td>";
echo "</tr>";
}
//si la valeur de la cle est un tableau on test la cle courante
if(is_array($value)){
//si elle est vide appel de la fonction clevide qui affiche que le font du tableau sans les cles vides
if($key==''){
clevide($value,$col+1);
//sinon on reboucle sur la fonction affiche pour descendre d'un niveau
}else{
affiche($value,$col+1);
}
}
}
} |