Maison > développement back-end > Problème PHP > php implémente la traversée des dossiers

php implémente la traversée des dossiers

PHPz
Libérer: 2023-05-29 16:39:39
original
3222 Les gens l'ont consulté

PHP est un langage de programmation très populaire qui peut être utilisé pour mettre en œuvre diverses opérations. Parmi eux, parcourir les dossiers et obtenir des informations sur les fichiers qui s'y trouvent est une opération fréquemment nécessaire. Dans cet article, je vais vous expliquer comment implémenter la traversée de dossiers en PHP.

  1. fonction opendir()

la fonction opendir() est une fonction utilisée par PHP pour ouvrir un dossier et doit être transmise lors de l'appel cette fonction Chemin du dossier en paramètre. Une fois le dossier ouvert avec succès, le contenu du dossier peut être lu via la fonction readdir().

Exemple de code :

$dir = './test';  //文件夹路径
$handle = opendir($dir);  //打开文件夹
while ($file = readdir($handle)) {  //循环读取所有文件
    if ($file != "." && $file != "..") {  //排除"."和".."两个特殊的文件夹
        echo $file."<br>";  //输出文件名
    }
}
closedir($handle);  //关闭文件夹
Copier après la connexion

Dans l'exemple de code ci-dessus, j'ai ouvert un dossier nommé "test" et lu les fichiers du dossier en boucle Tous les noms de fichiers, et ignore les deux dossiers spéciaux "." et ".."

  1. is_dir() fonction et parcours récursif

Si nous voulons parcourir tous les sous-répertoires et fichiers d'un répertoire, nous pouvons utiliser la méthode récursive . Pendant le processus de parcours, nous devons également déterminer si le parcours actuel est un dossier ou un fichier. Nous pouvons utiliser la fonction is_dir() pour le déterminer.

Exemple de code :

function scanDir($dir){
    if(!is_dir($dir)){
        echo '不是一个有效的文件夹路径';
        return;
    }
    $handle = opendir($dir);  //打开文件夹
    while($file = readdir($handle)){  //循环读取所有文件
        if($file == '.' || $file == '..'){  //忽略掉 ".",".." 特殊文件夹
            continue;
        }
        $path = $dir.'/'.$file;  //当前文件或文件夹的完整路径
        if(is_dir($path)){  //如果是一个文件夹
            echo '<b>'.$file.'</b><br>';  //输出文件夹名称
            scanDir($path);  //递归遍历子文件夹
        }else{  //如果是一个文件
            echo $file.'<br>';  //输出文件名称
        }
    }
    closedir($handle);  //关闭文件夹
}
Copier après la connexion

Dans l'exemple de code ci-dessus, j'ai défini une fonction scanDir() qui accepte un chemin de dossier comme paramètres. Dans la fonction, je détermine d’abord si le chemin entrant est un dossier. Si ce n'est pas un dossier, revenez directement. scanDir(),该函数接受一个文件夹路径作为参数。在函数内部,我首先判断传入的路径是否为文件夹。如果不是文件夹,则直接返回。

接下来,我打开文件夹,并循环读取其中的文件和文件夹。当遍历到文件夹时,我会输出文件夹名称,并递归调用 scanDir() 函数遍历子文件夹。当遍历到文件时,我只是输出文件名称。

  1. scandir() 函数

PHP 还提供了一个非常简单的函数 scandir(),可以用于一次性获取一个文件夹下的所有文件和文件夹名称。和 opendir() 函数不同的是,该函数返回的是一个数组,数组中包含了所有子文件夹和文件的名称。

示例代码:

$dir = './test';  //文件夹路径
$files = scandir($dir);  //获取文件夹下所有文件和文件夹名称
foreach($files as $file){  //循环遍历
    if($file == '.' || $file == '..'){  //忽略掉 ".",".." 特殊文件夹
        continue;
    }
    echo $file.'<br>';  //输出文件或文件夹名称
}
Copier après la connexion

在上面的示例代码中,我调用了 scandir()

Ensuite, j'ouvre le dossier et je lis les fichiers et dossiers qu'il contient en boucle. Lors de la traversée vers un dossier, j'affiche le nom du dossier et j'appelle récursivement la fonction scanDir() pour parcourir les sous-dossiers. Lors d'une itération sur un fichier, j'affiche simplement le nom du fichier.

    fonction scandir()

    #🎜🎜#PHP fournit également une fonction très simple scandir(), peut être utilisé pour obtenir tous les noms de fichiers et de dossiers d’un dossier en même temps. Contrairement à la fonction opendir(), cette fonction renvoie un tableau qui contient les noms de tous les sous-dossiers et fichiers. #🎜🎜##🎜🎜#Exemple de code : #🎜🎜#rrreee#🎜🎜#Dans l'exemple de code ci-dessus, j'ai appelé la fonction scandir() pour obtenir tous les fichiers et fichiers du dossier nom du dossier et parcouru le tableau en boucle. De même, j'ai ignoré les deux dossiers spéciaux "." et ".." et n'ai affiché que les noms des dossiers et des fichiers. #🎜🎜##🎜🎜#Summary#🎜🎜##🎜🎜#Dans cet article, j'ai présenté comment implémenter la traversée de dossiers avec PHP et démontré trois manières différentes. Grâce aux fonctions opendir() et readdir(), nous pouvons parcourir tous les fichiers et dossiers d'un dossier et effectuer les opérations correspondantes en jugeant le type de fichier. Grâce au parcours récursif, nous pouvons parcourir tous les sous-répertoires et fichiers d'un répertoire. Grâce à la fonction scandir(), nous obtenons simultanément tous les sous-dossiers et noms de fichiers d’un dossier. Si vous avez besoin de parcourir des dossiers en PHP, j'espère que cet article pourra vous fournir une référence. #🎜🎜#

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal