Je me souviens d'avoir fait ca pour mon stage.
...Si c'est des dossiers tu rappels la fonction. Ca donne une fonction incursive (désolé si c'est pas le
nom la fatigue tout ca

).
C'est pas le nom mais ça rime
incursif :
1. Qui fait irruption, qui envahit.
récursif :
1. Qui se définit en s’utilisant soi-même, directement ou indirectement.
Puisque c'est une fonction qui s'appelle elle-même quand on détecte un dossier (comme tu le dis justement) on choisira le terme de fonction récursive
Un exemple qui n'utilise pas scandir mais l'ancienne méthode avec opendir etc. (toujours fonctionnelle cependant) pour avoir un tableau facilement exploitable :
class List_dossier
{
private $tab_list = array();
private $message = null;
public function __construct ($dos = null)
{
if (isset($dos) && is_dir($dos)) $this->Lire_Dossier($dos); else $this->message = 'Ce dossier n\'existe pas';
}
private function Lire_Dossier($dir_nom)
{
$dir = opendir($dir_nom);
while($element = readdir($dir))
{
if($element != '.' && $element != '..')
{
if (!is_dir($dir_nom.'/'.$element))
{
$this->tab_list[$dir_nom][] = $element;
}
else
{
$this->Lire_Dossier($dir_nom.'/'.$element);
}
}
}
closedir($dir);
}
public function Affiche ()
{
if (!isset($this->message)) return $this->tab_list; else return $this->message;
}
}
// remplace 'Mon_dossier' par un de tes dossiers
$dossier = new List_dossier('Mon_dossier');
// Contrôle du contenu du tableau généré avec $dossier->Affiche()
echo '<pre>';
print_r($dossier->Affiche());
echo '</pre>';
EDIT : comme j'ai tardé à répondre je n'avais pas vu la réponse de
thehawk mais je laisse mon post car cette petite classe possède l'avantage de lister le nom des sous dossiers.
[quote="Superpilou"]Je me souviens d'avoir fait ca pour mon stage.
...Si c'est des dossiers tu rappels la fonction. Ca donne une fonction incursive (désolé si c'est pas le
nom la fatigue tout ca :D ).[/quote]
C'est pas le nom mais ça rime
[quote]incursif :
1. Qui fait irruption, qui envahit.
récursif :
1. Qui se définit en s’utilisant soi-même, directement ou indirectement.[/quote]
Puisque c'est une fonction qui s'appelle elle-même quand on détecte un dossier (comme tu le dis justement) on choisira le terme de fonction récursive :)
Un exemple qui n'utilise pas scandir mais l'ancienne méthode avec opendir etc. (toujours fonctionnelle cependant) pour avoir un tableau facilement exploitable :
[php]class List_dossier
{
private $tab_list = array();
private $message = null;
public function __construct ($dos = null)
{
if (isset($dos) && is_dir($dos)) $this->Lire_Dossier($dos); else $this->message = 'Ce dossier n\'existe pas';
}
private function Lire_Dossier($dir_nom)
{
$dir = opendir($dir_nom);
while($element = readdir($dir))
{
if($element != '.' && $element != '..')
{
if (!is_dir($dir_nom.'/'.$element))
{
$this->tab_list[$dir_nom][] = $element;
}
else
{
$this->Lire_Dossier($dir_nom.'/'.$element);
}
}
}
closedir($dir);
}
public function Affiche ()
{
if (!isset($this->message)) return $this->tab_list; else return $this->message;
}
}
// remplace 'Mon_dossier' par un de tes dossiers
$dossier = new List_dossier('Mon_dossier');
// Contrôle du contenu du tableau généré avec $dossier->Affiche()
echo '<pre>';
print_r($dossier->Affiche());
echo '</pre>';[/php]
EDIT : comme j'ai tardé à répondre je n'avais pas vu la réponse de [b]thehawk[/b] mais je laisse mon post car cette petite classe possède l'avantage de lister le nom des sous dossiers.