Tableau associatif

Eléphant du PHP | 71 Messages

29 nov. 2005, 17:30

Bonjour,

je voudrait recuperer des noms de dossiers dans un tableau associatif.
malheureusement mon script ne recupere que le dernier dossier trouvé :(

ce script le voici :
$curdir = "./gallerie";

$dir = opendir($curdir);
$id = 0;

while($p = readdir($dir))
	{
	if(is_dir($curdir."/".$p) && ($p != ".") && ($p != ".."))
		{
		$id++;
		$rep = array($id => $p);
		}
	}
closedir($dir);
foreach($rep as $id=>$valeur) 
    { 
    echo $id.' : '.$valeur.'<br>'; 
    }
normalement php devrait me retourner :

1:dossier n°1
2:dossier n°2
.....
5:dossier n°5

mais il me retourne seulement :

5:dossier n°5

pourriez vous me dire ou est mon erreur?

merci beaucoup

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

29 nov. 2005, 17:34

c'est normal, à chaque dossier, tu écrase le contenu de ton tableau rep pour le remplacer par le nouveau contenu

Si tu veux ajouter une case de clé $id et de valeur $p dans ton tableau, il faut faire
$rep[$id] = $p
De plus, je me suis permis de revoir ton identation qui était, excuse moi, un peu merdique
$curdir = "./gallerie";

$dir = opendir($curdir);
$id = 0;

while($p = readdir($dir)) {
	if(is_dir($curdir."/".$p) && ($p != ".") && ($p != "..")) {
		$id++;
		$rep[$id] = $p;
	}
}
closedir($dir);
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 19672 Messages

29 nov. 2005, 18:49

Hannnnn!, il dit des choses zeus :langue:

Bon allez, je me sens bon, on va même simplifier:
$curdir = "./gallerie";

$dir = opendir($curdir);
/* On déclare la variable $rep en tableau */
$rep = array();
while($p = readdir($dir))
{
    if(is_dir($curdir."/".$p) && ($p != ".") && ($p != ".."))
    {
        /* On ajoute le nom du répertoire à la suite des autres, l'incrémentation de l'index est automatique */
        $rep[] = $p;
    }
}
closedir($dir);
MAIS ! Ça, c'est pas un tableau associatif mais un tableau indexé ; si tu veux un tableau associatif, il faut des index nommés. Tu pourrais bien avoir le nom de chacun de tes dossiers en index de $rep... mais tu mettras quoi comme valeur dedans ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

30 nov. 2005, 11:42

Hannnnn!, il dit des choses zeus :langue:
Je me suis dit que comme ça, il s'en souviendrait ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 71 Messages

30 nov. 2005, 13:39

merci beaucoup à vous deux !! :wink:

je me suis compliqué la vie c'est bien plus simple comme ca j'aurait du trouver tout seul :oops:

merci aussi pour les explications, je connais maintenant la difference entre un tableau indexé et un tableau associatif :)