Boucle while PHP

[Résolu/Fermé]
Signaler
Messages postés
181
Date d'inscription
jeudi 28 août 2008
Statut
Membre
Dernière intervention
30 décembre 2010
-
Messages postés
181
Date d'inscription
jeudi 28 août 2008
Statut
Membre
Dernière intervention
30 décembre 2010
-
Bonjour,

J'ai cette boucle la :

while ($fichier[$i] = readdir($pointeur))
{

$i++;

}

le problème c'est que $fichier pour tous les indices me retourne 0. Comment faire pour qu'il me retourne la valeur de readdir($pointeur) ????

Merci pour vos réponses

4 réponses

Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
892
Salut,

as tu fais opendir avant ?

a quoi correspond $pointeur ?
readir lit tout le repertoire


<?php
if ($handle = opendir('ton_repertoire')) {
    $i=0;
    $fichier=array();
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            $fichier[$i]=$file;
        }
        $i++;
    }
    closedir($handle);
}

//pour visualiser
echo "<pre>";
print_r($fichier);
echo "</pre>";
?>

Messages postés
181
Date d'inscription
jeudi 28 août 2008
Statut
Membre
Dernière intervention
30 décembre 2010
7
Oui $pointeur était un opendir

Et ben c'est parfait merci beaucoup.

J'ai juste trois questions :

1 - A quoi sert cette ligne : if ($file != "." && $file != "..") ???

2 - Quel est l'intérêt du false dans cette ligne : while (false !== ($file = readdir($handle))) ???

3 - Qu'est qui n'allait pas dans mon code ????

Excuse moi de te poser toutes ces questions mais je commence en php et j'aimerais bien savoir ce qui va et ne va pas !!!!

Encore merci pour ce code
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
892
Re,

1 - A quoi sert cette ligne : if ($file != "." && $file != "..") ???

c'est pour ne pas tenir compte des fichiers . et .. qui sont dans le repertoire en Unix

2 - Quel est l'intérêt du false dans cette ligne : while (false !== ($file = readdir($handle))) ???
c'est pour tester si la fonction readdrir marche

3 - Qu'est qui n'allait pas dans mon code ????

$pointeur: tu n'as pas choisi un nom parlant pour opendir ? ça n'empêche pas de fonctionner mais c'est plus facile à comprendre

tu n'avais pas mis $i=0;
déja la condition d'arret n'est pas existante
tu doit téster si la fin de fichier est atteinte.
while(!feof($fich))
{
//ton traitement
i++;
}
Messages postés
181
Date d'inscription
jeudi 28 août 2008
Statut
Membre
Dernière intervention
30 décembre 2010
7
Ok d'accord.

Merci beacoup !!