Page 1 sur 1

Lister les dossiers sans les doublons

Posté : 12 juil. 2013, 12:08
par rimie
Bonjour,

J'ai un repertoire contenant des sous-repertoires, je veux lister les sous repertoires sans mentionner les doublons:

Code : Tout sélectionner

+ Root ++ Folder1 +++sFolder11 +++sFolder12 +++sFolder13 ++ Folder2 +++sFolder11 +++sFolder21 +++sFolder22
Ici j'ai sFolder11 se triuvant sur Folder1 et Folder2, je veux pas le lister:
<?php
if ($handle = opendir('Root')) {
    if ($handle = opendir('.')) {
    while (false !== ($entry = readdir($handle))) {
        if (($entry != ".") && ($entry != "..") && ($entry != $entry)) {
            echo $entry.'<br />';
        }
    }
    closedir($handle);
}
}
?>
ca me retourne tien

Merci a vous

Re: Lister les dossiers sans les doublons

Posté : 12 juil. 2013, 15:52
par Spols
ceci ($entry != $entry) retournera toujours false
Tu dois enregistrer tes dossiers dans un tableau, et tester à chaque fois si le répertoire courant est déjà connu. Si il ne peut y avoir que des doublons et pas de triple, lors de la rencontre d'un doublon, il suffit de le retirer du tableau, sinon tu dois indiquer dans ton tableau qu'il est double et ensuite soit ne pas en tenir compte à l'affichage soit le retirer par une boucle

Re: Lister les dossiers sans les doublons

Posté : 12 juil. 2013, 16:54
par rimie
ce n'est pas ce que je souhaitais:
if ($handle = opendir('../../Alfirdaous')) {
    if ($handle = opendir('.')) {
        $inArray = array();
    while (false !== ($entry = readdir($handle))) {
        if (($entry != ".") && ($entry != "..")) {
            if(!in_array($entry, $inArray)){
                $inArray = $entry.'<br />';
            } else {
                echo $entry.' exists <br />';
            }
        }
        var_dump($inArray);

        } // end while
    
    
    closedir($handle);
} // end if
} // end if

Re: Lister les dossiers sans les doublons

Posté : 13 juil. 2013, 01:50
par rimie
j'avais un resultat qui se repetait plusieurs fois

Re: Lister les dossiers sans les doublons

Posté : 15 juil. 2013, 09:40
par Spols
C'est normal, tu vérifie si $entry est dans ton array mais après tu mets $entry.'<br />' dans ton array donc tu n'aura jamais le cas d'un doublon.
il faut gérer tes <br /> lors de l'affichage
if ($handle = opendir('../../Alfirdaous')) {
    if ($handle = opendir('.')) {
        $inArray = array();
    while (false !== ($entry = readdir($handle))) {
        if (($entry != ".") && ($entry != "..")) {
            if(!in_array($entry, $inArray)){
                $inArray = $entry;
            } else {
                echo $entry.' exists <br />';
            }
        }
        var_dump($inArray);

        } // end while
    
    
    closedir($handle);
} // end if
} // end if

Re: Lister les dossiers sans les doublons

Posté : 15 juil. 2013, 10:57
par moogli
Hum $inarray n'est pas un tableau, entry non plus d'ailleurs manque quelque chose la ;)



@+

Re: Lister les dossiers sans les doublons

Posté : 15 juil. 2013, 11:05
par Spols
Ah ouais j'avais pas vu cela

inArray est déclaré en tableau, il faut donc le remplir comme telle
if ($handle = opendir('../../Alfirdaous')) {
    if ($handle = opendir('.')) {
        $inArray = array();
    while (false !== ($entry = readdir($handle))) {
        if (($entry != ".") && ($entry != "..")) {
            if(!in_array($entry, $inArray)){
                $inArray[] = $entry;
            } else {
                echo $entry.' exists <br />';
            }
        }
        var_dump($inArray);

        } // end while
    
    
    closedir($handle);
} // end if
} // end if

Re: Lister les dossiers sans les doublons

Posté : 17 juil. 2013, 10:15
par rimie
merci je vais tester ca.

EDIT: ca marche toujours pas :(

Re: Lister les dossiers sans les doublons

Posté : 17 juil. 2013, 10:58
par Spols
un message d'erreur ou une description du comportement non souhaité nous aiderait à avancer

Re: Lister les dossiers sans les doublons

Posté : 18 juil. 2013, 03:28
par rimie
les donnees sont repetitives plus qu'une fois