premiers pas

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : premiers pas

par Invité » 07 sept. 2006, 16:11

Re tout le monde les gens.

J'ai procédé en 2 étapes plutôt que de tout faire dans la même boucle (qui normalement était censé fonctionner l'ayant fait dans un autre exemple bref) et cette fois-ci, ça marche !!!!

MERCI MERCI MERCI MERCI...j'vais pas faire les 1000 mais le coeur y est ! Vous êtes tous géniaux ! C'est résolu :wink:

kabukishido

par sadeq » 07 sept. 2006, 15:32

il faut sortir asort($mesfichiers) de la boucle sinon le tri se fait plusieurs fois et ce n'est pas bien de le répéter.

asort() tri une fois pour toute le tableau t'as pas besoin de l'intégrer dans une boucle.
Tu dois attendre que le tableau soit rempli par la boucle et ensuite (après la fin de la boucle) tu peut faire le tri une fois.

par Invité » 07 sept. 2006, 14:59

Bizarre, est-ce que le problème (si problème il y a du coup) ne pourrait pas venir du fait que mon tableau s'incrémente dynamiquement via un while ??? D'où l'envie de commencer mon tableau à 1. Si j'ai de l'alphanumérique genre ABA20.txt ca pose des problèmes ?
$mesfichiers = array();
$rep=opendir('mondossier');
$i = 0;
while ($file = readdir($rep)) {
asort($mesfichiers);
if ($file != "." && $file != "..") {
$mesfichiers[$i] = $file;
echo $mesfichiers[$i]."<br>";
$i++;
}
}
?>
kabukishido

par charabia » 07 sept. 2006, 14:54

Tu as dû louper quelque chose. A quoi correspond le [4] à la fin de ton affichage ? Tu devrais avoir [5] => ....txt
Bah non...
Le premier index est 0 ca fait bien 5 variables...
Oui mea culpa j'avais pas fait attention, j'avais vu une répétition de 2 fois [4]

par Number » 07 sept. 2006, 14:48

Tu as dû louper quelque chose. A quoi correspond le [4] à la fin de ton affichage ? Tu devrais avoir [5] => ....txt
Bah non...
Le premier index est 0 ca fait bien 5 variables...

Par contre je comprend pas si tu utilises rsort avant le print_r() et apres la definition du tableau.
Les index seront toujours 0,1,2,3,4 vu qu'il sont incrémenté. Et pas defini par un "=>"
Mais les variables elle sont dans l'ordre inverse :

a,b,c,d,e devient : e,d,c,d,a ..

par charabia » 07 sept. 2006, 14:34

J'ai fait le code chez moi l'affichage est correct...

Code : Tout sélectionner

AEA.txt ADA.txt ACA.txt ABA.txt AAA.txt Array ( [0] => AEA.txt [1] => ADA.txt [2] => ACA.txt [3] => ABA.txt [4] => AAA.txt )

par Invité » 07 sept. 2006, 14:19

Un erreur dans la saisie de mon post ca fait en fait [0],[1],[2],[3],[4].

Dès que j'applique une commande à mon tableau, la p'tite astuce renvoie bien le résultat voulu mais mon echo dans la boucle ne m'affichage pas la même chose. L'élément ayant l'indice 0 est systématiquement en dernière position alors que le reste est bien trié :?

par Number » 07 sept. 2006, 14:00

Je me permet :

Parceque rsort sert a trier dans le sens inverse :

Code : Tout sélectionner

rsort() effectue un tri en ordre décroissant (du plus grand au plus petit) du tableau array

par charabia » 07 sept. 2006, 13:59

Tu as dû louper quelque chose. A quoi correspond le [4] à la fin de ton affichage ? Tu devrais avoir [5] => ....txt

par Invité » 07 sept. 2006, 12:11

Ok, désolé d'abuser de ta patience (encore merci)

Voici le truc, je suis persévérant et veux y arriver seul donc j'explique juste les résultats obtenu et escompté :

Le <?php print_r($mon_tableau); ?> me donne ceci :
Array ( [0] => AEA.txt [1] => ADA.txt [2] => ACA.txt [3] => ABA.txt [4] => AAA.txt [4] ) //c'est exactement ce que je veux

mais à l'affichage, avec un rsort, j'obtiens :
ADA.txt
ACA.txt
ABA.txt
AAA.txt
AEA.txt//pourquoi cet élément (fameux indice 0) n'est-il pas en première place :'(

kabukishido

par charabia » 07 sept. 2006, 11:47

Un tit morceau de code ? :) J'ai un peu de mal à saisir les phrases aujourd'hui lol

par Invité » 07 sept. 2006, 11:31

Merci pour le lien, j'ai réussi à faire grossomodo ce que je voulais à une exception :

Quand je fais un tri sur un nom de fichier il me zappe l'enregistrement qui à l'indice 0 et me le colle à la fin. J'me suis dit que j'allais commencer mon tableau à 1 mais c'est pas possible puisque celui-ci s'incrémente dynamiquement, je ne le déclare pas avec un 1=>. Que faire ?

kabukishido

par charabia » 07 sept. 2006, 09:55

par Invité » 07 sept. 2006, 09:42

Ok et dans le cas où j'ai mal déclaré un tableau alphabet genre je suis un boulet ou un psychopathe :
$alphab=array("a","b","z","i","g"...);//dans le désordre mais les 26.
Comment appliquer une commande à tout un tableau exemple simple avec un sort($alphab) si l'echo ne me renvoie qu'une valeur..? Ca se passe dans la boucle ? J'avoue que j'ai du mal à me rendre compte :roll:

kabushido

Ps : merci pour le partage de ton savoir :wink:

par charabia » 07 sept. 2006, 09:07

Non le echo permet d'afficher une donnée tout simplement.

Là dans ton exemple, si tu veux afficher de 0 à 9, il faut que ton affichage se situe dans la boucle avant l'incrémentation pour que la boucle puisse repartir et afficher l'élément suivant ;)

Concernant le <? ou <?php : le <?php est plus souvent utilisé pour éviter de futurs soucis donc plus "correct" que <? même si ce dernier est encore pas mal utilisé.

Par exemple si tu utilises WAMP, <? te sortira un erreur (sauf si tu changes la config).