$arbre["racine"]=array(); $arbre["racine"]["noeud1"]=array("feuille"=>1); $arbre["racine"]["noeud2"]=array("noeud 2.1"=>array("feuille"=>1), "noeud 2.2"=>array("feuille"=>1), "noeud 2.3"=>array("noeud2.3.1"=>array("feuille"=>1)));
function 2DtoTree($lst, $sep) { $out=array(); foreach ($lst as $k=>$v) { $indices= explode($sep, $k); $treeTxt="$out"; foreach($indices as $ind) { $treeTxt.="[".$ind."]"; } $treeTxt.="=".$v; eval($treeTxt); } return $out; }
function recu($lst) { $ret= ""; foreach($lst as $k=> $v) { if(is_array($v)) { $ret.=""; //s'execute avant recurs $ret.=recu($v); $ret.=""; //s'execute après recurs, une fois tout le traitement descendant fait donc bien placer pour fermer le UL } else { $ret.="<li>".$v."</li>"; } } return $ret; }
/* $lst considérer de la forme suivante: [IND][LIB] 1 Menu 1 1.1 Sous Menu 1.1 2 Menu 2 .... */ //init $sep ="."; $nbSepOld=0; $out=""; //bouclage sur la list foreach($lst as $k=>$v) { $nbSepCur=count(explode($sep, $v["IND"])); //compte le nombre d'élement du tableau séparer par $sep $nbUL=$nbSepCur-$nbSepOld; //récupère la différence de niveau if($nbUL>0) { for($i=0; $i<$nbUl; $i++) { $out.="\n"; //applique les UL entrants } } if($nbUL<0) { for($i=0; $i<-$nbUl; $i++) { $out.="\n"; //applique les UL sortants } } $nbSepOld=$nbSepCUr; $out.="<LI>".$v."</LI>"; } echo $out;
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question$nbSepOld=$nbSepCUr;
$out.="<LI>".$v."</LI>";