PHP: Utilisation de scandir(), les dossiers sont traités comme des fichiers
À l'aide de PHP 5.3.3 (stable) sur Linux CentOS 5.5.
Voici ma structure de dossier:
www/myFolder/
www/myFolder/testFolder/
www/myFolder/testFile.txt
À l'aide de scandir() à l'encontre de la "mondossier" dossier-je obtenir les résultats suivants:
.
..
testFolder
testFile.txt
Je suis en train de filtrer les dossiers à partir des résultats et de retourner uniquement des fichiers:
$scan = scandir('myFolder');
foreach($scan as $file)
{
if (!is_dir($file))
{
echo $file.'\n';
}
}
Les résultats attendus sont:
testFile.txt
Cependant je suis en train de voir:
testFile.txt
testFolder
Quelqu'un peut me dire ce qui ne va pas ici, s'il vous plaît?
OriginalL'auteur Reado | 2010-07-28
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de changer de répertoire ou de l'ajouter à votre test.
is_dir
retourne false si le fichier n'existe pas.Que devrait faire la bonne chose
Ou vous pouvez utiliser aussi bien is_file() la fonction à suivre une logique positive. Ex : if(is_file("mondossier/".$fichier)) { // faire smthing }
OriginalL'auteur Cfreak
N'est pas is_dir() prend un fichier en paramètre?
Le paramètre de
is_dir
est un relative nom de fichier! Donc ce n'est PAS correct, vous devez passer myFolder trop (par exemple,is_dir('myFolder/'.$file)
) comme dans Cfreak du answer.OriginalL'auteur Scott
Déjà dit ici, la réponse: http://bugs.php.net/bug.php?id=52471
Pas de soucis. Tout le monde fait des erreurs parfois 🙂
Merci Daniel, désolé pour tous les rapports de bug aujourd'hui. 🙁
OriginalL'auteur Daniel Egeberg
Si vous avez été l'affichage des erreurs, vous pouvez voir pourquoi cela ne fonctionne pas:
Maintenant essayer de passer $fichier à is_dir()
OriginalL'auteur Mark Baker
Si quelqu'un qui vient ici est intéressé à économiser de la sortie d'un tableau, voici un moyen rapide de le faire (modifié afin d'être plus efficace:
OriginalL'auteur FluorescentGreen5