Decapfour | Voila je souhaite trier un tableau de valeur.
J'utilise usort avec un teableau qui contient ce genre de trucs
TH PRODUITTEST PRODUIT 1500 € PAR PRO 01/01/2007 45
Code :
- ---
- usort($tableau_info,"compare" );
- ---
- function compare($a,$b){
- global $tri;
- global $ordre;
- if($tri == "prix" || $tri == "dispo" ){
- if($ordre == "ascending" ){
- if($a['prix'] < $b['prix'])return -1;
- else return 1;
- }
- if($ordre == "descending" ){
- if($a['prix'] > $b['prix'])return -1;
- else return 1;
- }
- }elseif($tri == "date_depart" ){
- $tempdate1 = explode("-",$a['date_depart']);
- $tempdate2 = explode("-",$b['date_depart']);
- if($ordre == "ascending" ){
- if(mktime(0,0,0,(int)$tempdate1[1],(int)$tempdate1[2],(int)$tempdate1[0]) < mktime(0,0,0,(int)$tempdate2[1],(int)$tempdate2[2],(int)$tempdate2[0]))return -1;
- else return 1;
- }
- if($ordre == "descending" ){
- if(mktime(0,0,0,(int)$tempdate1[1],(int)$tempdate1[2],(int)$tempdate1[0]) > mktime(0,0,0,(int)$tempdate2[1],(int)$tempdate2[2],(int)$tempdate2[0]))return -1;
- else return 1;
- }
- }
- else{
- if($ordre == "ascending" ){
- return strcasecmp($a[$tri],$b[$tri]);
- }
- if($ordre == "descending" ){
- return !strcasecmp($a[$tri],$b[$tri]);
- }
- }
- }
|
Sauf que quand on passe a 1000-2000 lignes, le usort il fait bobo au serveur en dépassant allegrement les 30 sec d'execution du script.
Vous avez une autre proposition d'utilisation d'un algo de tri de tableau avec les trucs que j'ai spécifié dans la fonction compare?
Faut impérativement que ca marche pareil que dans l'état la, mais en plus vite en fait. |