Classement de dates

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 558 fois - Téléchargée 32 fois

Contenu du snippet

Voila, il s'agit d'un petit code (donc si possibler, évitez de me faire remarquer que c'est inutile ;-)) que j'ai fais suite à une demande dans le forum...

Il permet de classer des dates au format AAAA-MM-JJ contenues dans un fichier texte (1 date / ligne), selon A, M, ou J et de manière croissante ou décroissante... Cela montre comment utiliser la fonction usort

Voila, j'attends vos commentaires

Source / Exemple :


<?php
/*
-------
Params:
-------
$file = url du fichier (relatif)
$critere = A ou M ou J
$order = asc ou desc

-------
Retour:
-------
1 ou 0

  • /
function classer($file, $critere, $order) { $fichier = @file($file); // si aucune ligne $count = count($fichier); if($count == 0) return false; // on enlève les \r\n finaux for($i = 0; $i < $count; $i++) $fichier[$i] = rtrim($fichier[$i]); // paramètre critère $critere = strtolower($critere); if($critere == 'a') $GLOBALS['critere'] = 0; else if($critere == 'm') $GLOBALS['critere'] = 1; else if($critere == 'j') $GLOBALS['critere'] = 2; else return 0; $order = strtolower($order); if($order == 'asc') $GLOBALS['order'] = -1; else if($order = 'desc') $GLOBALS['order'] = 1; else return 0; if(!usort($fichier, "comparer")) return 1; $sortie = implode("\r\n", $fichier); $fp = fopen($file, 'w'); if(!$fp) return 0; if(!@fputs($fp, $sortie)) return 0; @fclose($fp); return 1; } function comparer($a, $b) { $array_a = explode('-', $a); $array_b = explode('-', $b); if($array_a[$GLOBALS['critere']] == $array_b[$GLOBALS['critere']]) return 0; return ($array_a[$GLOBALS['critere']] > $array_b[$GLOBALS['critere']]) ? - $GLOBALS['order'] : $GLOBALS['order']; } echo classer('fichier.txt', 'j', 'desc'); ?>

A voir également

Ajouter un commentaire

Commentaires

coockiesch
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3 -
Salut!
Alors faudrait ouvrir chaque fichier, lire la première ligne et la placer dans un tableau et ensuite faire le classement...

@++

R@f
aquewel
Messages postés
145
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
6 juin 2010
-
yop mec !

souci :
// on enlève les \r\n finaux
for($i = 0; $i < $count; $i++) {
$fichier = rtrim($fichier[0]);

j'ai mis ^[0] pourkoi ca classe pas suivant toutes les premieres lignes de mes fichiers ????

car en faite je recupere toute les ID.txt, dedans il y a les dates et je voudrais classer ces fichiers en fonction des premieres lignes de chaque fichier...

bonne et douce nuit !
aquewel
Messages postés
145
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
6 juin 2010
-
c chaud a comprendre ta fonction ;-)
mais avec le temps j'avance !

bonjour a toi ;-)
coockiesch
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3 -
Salut!
1 si elle s'est exécutée convenablement, 0 sinon

@++

R@f
aquewel
Messages postés
145
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
6 juin 2010
-
merci je l'utilise
je comprends pa pkoi elle retourne 1

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.