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 ?

Comment puis-je répertorier de manière récursive tous les fichiers et dossiers d'un répertoire à l'aide de PHP ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-02 12:37:17840parcourir

How Can I Recursively List All Files and Folders in a Directory Using PHP?

Parcours récursif de répertoires et de fichiers avec PHP

Q : Comment puis-je lister de manière récursive tous les fichiers et dossiers d'un répertoire à l'aide d'un Fonction PHP ?

A :Pour parcourir un répertoire et ses sous-répertoires, suivez ces étapes :

  1. Définir une fonction PHP :

    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;
    }
  2. Récupérer des fichiers et Dossiers :

    var_dump(getDirContents('/xampp/htdocs/WORK'));
  3. Sortie :

    La sortie contiendra une liste de tous les fichiers et dossiers du répertoire spécifié, y compris les sous-répertoires.

Améliorations par rapport à l'original code :

  • Éviter la récursion infinie : Le code mis à jour garantit que la récursivité n'est effectuée que sur les répertoires non racine, empêchant ainsi les boucles infinies.
  • Utiliser Realpath : realpath() est utilisé pour obtenir le chemin réel de l'élément, ce qui résout tout problème symbolique liens.
  • Transmettre les résultats par référence : Le tableau des résultats est passé par référence pour éviter de copier le tableau à chaque itération, ce qui peut améliorer les performances.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn