Recherche récursive de fichiers et de dossiers avec PHP
Pour parcourir le contenu d'un répertoire et tous les sous-répertoires, une fonction récursive est utilisée. Cependant, le code fourni présente un problème de performances, entraînant un ralentissement significatif du navigateur.
Le problème
La fonction n'exclut pas "." et ".." des appels récursifs, conduisant à une boucle infinie et à une exécution lente.
Le correctif
Pour résoudre ce problème, nous avons modifié le code 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; }
Exclusion de "." et ".."
Nous avons ajouté des conditions pour exclure "." et ".." répertoires des appels récursifs. Ces répertoires représentent respectivement les répertoires actuel et parent, et leur inclusion créerait une boucle infinie.
Utilisation
Pour utiliser la fonction, fournissez simplement le chemin d'accès au répertoire que vous souhaitez parcourir :
var_dump(getDirContents('/xampp/htdocs/WORK'));
Ce code renverra un tableau contenant la liste complète des fichiers et des dossiers dans le répertoire spécifié. Chaque entrée sera le chemin complet du fichier ou du dossier.
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!