Maison >développement back-end >tutoriel php >Pourquoi mon code PHP renvoie-t-il « 1 » au lieu des noms de fichiers lors de l'utilisation de « readdir() » ?

Pourquoi mon code PHP renvoie-t-il « 1 » au lieu des noms de fichiers lors de l'utilisation de « readdir() » ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-05 10:18:16783parcourir

Why Does My PHP Code Return

Obtenir des noms de fichiers dans un répertoire avec PHP : résoudre l'énigme du « 1 »

En PHP, obtenir les noms de fichiers dans un répertoire est une tâche courante. Cependant, certains peuvent rencontrer un problème inattendu où les noms de fichiers sont renvoyés sous la forme « 1 » au lieu de leurs noms réels. Cette énigme peut survenir lors de l'utilisation de la fonction readdir() avec is_dir() et opendir().

Le code :

if (is_dir($log_directory)) {
    if ($handle = opendir($log_directory)) {
        while ($file = readdir($handle) !== FALSE) {
            $results_array[] = $file;
        }
        closedir($handle);
    }
}

Le problème :

Lors de l'itération sur les éléments du $results_array, les noms de fichiers attendus ne sont pas renvoyés. Au lieu de cela, ils sont remplacés par « 1 ». Ce comportement est dû à un détail subtil relatif au fonctionnement de readdir().

La solution :

Pour remédier à ce problème, il est conseillé de contourner opendir() et readdir() et utilisez plutôt glob(). glob() est une fonction complète qui fournit une solution puissante pour extraire les noms de fichiers dans un répertoire.

Le code corrigé :

foreach(glob($log_directory.'/*.*') as $file) {
    ...
}

Dans ce code révisé, glob() est utilisé pour parcourir les fichiers dans le $log_directory, en renvoyant leurs chemins. Par la suite, chaque chemin de fichier est attribué à la variable $file, permettant un traitement ou une utilisation ultérieurs.

Cette approche contourne les limitations de readdir() et fournit les résultats souhaités : une liste de noms de fichiers réels, et non '1 '.

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