Comparer des fichiers

Comparer des fichiers - PHP - Programmation

Marsh Posté le 07-04-2006 à 17:30:16    

Bonjour,
 
Voilà, j'ai besoin de classer l'affichage de mes fichiers dans une page par ordre décroissant, et pour celà, j'utilise une fonction :
 

Code :
  1. function compare($a){
  2.   $arrA = substr("$a", 0, 4);
  3.   if ( $arrA[0] > $arrA[1])
  4.     return -1;
  5.   else if ( $arrA[0] == $arrA[1])
  6.   if ( $arrA[0] < $arrA[1])
  7.     return 0;
  8.     return 1;
  9. rsort($tFichiers,"compare" );


 
$tFichiers étant le tableau où se trouve les fichiers présents dans un répertoire spécifique.
 
Les fichiers ont tous comme début la date et c'est ce à quoi je veux me fier pour les classer.
 
En gros :
 
- 0512-toto.txt
- 0601-toto.txt
- 0602-toto.txt
- etc...
 
Alors ça fonctionne mal... pour le moment, ça me classe pas tout dans l'ordre... quelqu'un pourrait m'aider ?
 
Merci d'avance.


Message édité par thenab le 07-04-2006 à 17:31:18

---------------
Thenab - Quitte à passer pour un con, passe vite !
Reply

Marsh Posté le 07-04-2006 à 17:30:16   

Reply

Marsh Posté le 07-04-2006 à 20:53:33    

Si tu lis la doc pour rsort :bool rsort ( array &array [, int sort_flags] ), tu te rends compte que cette fonction n'accepte pas de callback en second parametre...
 
La fonction interpretre ta chaine "compare" comme un entier de valeur 0 qui correspond au flag SORT_REGULAR.
 
Tu fais donc tout simplement l'equivalent d'un rsort($tFichiers).
 
 
 

Reply

Marsh Posté le 08-04-2006 à 16:44:46    

si tes fichiers ont tous le même nom cad (-toto.txt)
 
je dirais que c'est tres facile.
 
tu boucle sur ton dossier en récupérant que la valeur en utilisant
intval($filename)
 
tu mets tt ses valeurs dan un tableau que tu tries ensuite ac rsort
 
et là tu reconstruits ton nom de fichier
$val.'-toto.txt';
 
je sais pas si je suis très clair. tien nous au courant


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
Reply

Marsh Posté le 08-04-2006 à 18:46:19    

Petite implementation pour la solution donne par newneo2001.
 

Code :
  1. $tFichier = array_combine($tFichiers, $tFichiers); // on cree un tableau associatif nom_fichier=>nom_fichier
  2. function key_to_intval($val, &$key) {
  3.     $key = intval($key);
  4. }
  5. array_walk($tFichier , 'key_to_intval'); // on "cast" toute les clefs du tableau en int
  6. krsort($tFichier , SORT_NUMERIC); // on fait un trie inverse sur les clefs du tableau
  7. foreach($tFichier as $key => $value) { // affichage des nom de fichiers  
  8.    print $value.'<BR>';
  9. }

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed