Lister les dossiers sans les doublons

Mammouth du PHP | 725 Messages

12 juil. 2013, 12:08

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

Mammouth du PHP | 1966 Messages

12 juil. 2013, 15:52

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
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Mammouth du PHP | 725 Messages

12 juil. 2013, 16:54

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

Mammouth du PHP | 725 Messages

13 juil. 2013, 01:50

j'avais un resultat qui se repetait plusieurs fois

Mammouth du PHP | 1966 Messages

15 juil. 2013, 09:40

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
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 juil. 2013, 10:57

Hum $inarray n'est pas un tableau, entry non plus d'ailleurs manque quelque chose la ;)



@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 1966 Messages

15 juil. 2013, 11:05

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
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Mammouth du PHP | 725 Messages

17 juil. 2013, 10:15

merci je vais tester ca.

EDIT: ca marche toujours pas :(

Mammouth du PHP | 1966 Messages

17 juil. 2013, 10:58

un message d'erreur ou une description du comportement non souhaité nous aiderait à avancer
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Mammouth du PHP | 725 Messages

18 juil. 2013, 03:28

les donnees sont repetitives plus qu'une fois