RTFM
lorsque vous définissez une fonction, la portée d'une variable définie dans cette fonction est locale à la fonction.
En clair :
Dans ta fonction
mkmap(), tu utilises une variable
$files locale, différente de la variable
$files définie au début de ton script.
A la fin de la fonction elle "disparaît",
$files reprend la valeur donnée au début de ton script, soit un tableau vide.
C'est au niveau de ta fonction qu'il faut déclarer
$files comme une variable globale (c'est à dire que la fonction utilisera la même variable que le script l'appellant).
function mkmap($dir){
global $files; // On signale à la fonction d'utiliser la variable définie dans le script
// reste du code
}
Ceci-dit, il vaut mieux éviter d'utiliser les variables globales quand on peut (pour éviter de se mélanger les pinceaux et d'écraser une variable qu'on souhaitait garder).
Dans ton cas, j'aurais plutôt tendance à faire une fonction qui retourne un tableau.
function mkmap($dir){
$folder = opendir ($dir);
while ($file = readdir ($folder)) {
if ($file != "." && $file != "..") {
$pathfile = $dir.'/'.$file;
$fichiers[] = $pathfile;
if(filetype($pathfile) == 'dir' && $pathfile != './phpMyAdmin'){
mkmap($pathfile);
}
}
}
closedir ($folder);
return $fichiers;
}
$files = mkmap('.');
Et au passage, si tu utilises PHP5 tu devrais te pencher sur la fonction
scandir()...