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');
?>
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.