Fonction recursive

Fermé
sheist - 17 févr. 2014 à 19:38
 sheist - 18 févr. 2014 à 18:36
Bonjour,



je souhaiterais créer une arborescence à partir d"un array dont voici la forme :

Array (
[medias] => Array (
[document] => Array (
[pdf] => Array (
)
[txt] => Array (
)
)
[image] => Array (
[medium] => Array (
)
[small] => Array (
)
[tmp] => Array (
)
)
)
)

j'ai donc créer cette fonction récursive:

	function node($node = array(), $parent = '') {
$tmp = '';
if(!empty($node)){
$name = key($node);
$path = $parent ? $parent.'/'.$name : $name;
$tmp .= '
<div class="folder" >
<a href="?f='.$path.'"></a>
<div class="content">';

foreach($node as $child){
$tmp.= $this->node($child, $path);

}

$tmp .= '
</div>
</div>';


}

return $tmp;
}

mais çà ne fonctionne pas ... je vois pas pourquoi, je cherche depuis des heures et je ne vois pas ce qui cloche

coici le résultat que çà me renvoie :

medias
         document
                  pdf
                  medium


Vous auriez une idée svp ?

Merci

1 réponse

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
18 févr. 2014 à 15:45
Salut,

Voici une solution possible :
function node($node = array(), $parent = '') {
	$tmp = '';
	
	foreach($node as $name => $element) {
		$path = $parent ? $parent . '/' . $name : $name;
		
		$tmp .= '
		<div class="folder">
			<a  href="?f='.$path.'"></a>
			<div class="content">';
			
		$tmp .= node($element, $path);
		
		$tmp .= '
			</div>
		</div>';
	}
	
	return $tmp;
}


Bonne journée
1
Merci beaucoup,

ton exemple fonctionne parfaitement

Bonne soirée
0