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