Maison >développement back-end >tutoriel php >Comment puis-je répertorier de manière récursive tous les fichiers et dossiers d'un répertoire à l'aide de PHP, en évitant les boucles infinies et les entrées en double ?
Détermination des fichiers et des dossiers dans un répertoire à l'aide de fonctions PHP récursives
Cette discussion étudie une méthode permettant de parcourir les fichiers et sous-répertoires d'un répertoire de manière récursive.
Le fourni code :
function getDirContents($dir){ $results = array(); $files = scandir($dir); foreach($files as $key => $value){ if(!is_dir($dir. DIRECTORY_SEPARATOR .$value)){ $results[] = $value; } else if(is_dir($dir. DIRECTORY_SEPARATOR .$value)) { $results[] = $value; getDirContents($dir. DIRECTORY_SEPARATOR .$value); } } } print_r(getDirContents('/xampp/htdocs/WORK'));
Le dilemme :
Le code donné possède une fonction récursive pour explorer les répertoires et les fichiers. Cependant, il ne parvient pas à ignorer « ». et '..', ce qui entraîne une boucle potentiellement sans fin. De plus, chaque fichier et répertoire est dupliqué dans les résultats.
La réponse :
Pour résoudre ce problème, nous pouvons modifier la fonction comme suit :
function getDirContents($dir, &$results = array()) { $files = scandir($dir); foreach ($files as $key => $value) { $path = realpath($dir . DIRECTORY_SEPARATOR . $value); if (!is_dir($path)) { $results[] = $path; } else if ($value != "." && $value != "..") { getDirContents($path, $results); $results[] = $path; } } return $results; }
Ce code :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!