OVH Cloud OVH Cloud

Tri d'un tableau multi-colonnes selon UNE colonne precise ?

3 réponses
Avatar
Bruno Baguette
Bonjour,

J'ai un tableau multi-colonnes qui est remplit comme suit :

$ListeDescriptions[$Compteur]['IdActivite']=15;
$ListeDescriptions[$Compteur]['Timestamp']=1069378906;
$ListeDescriptions[$Compteur]['Libelle']='Le libelle de
l\'activité';

Comment-puis je trier le tableau selon le champ IdActivite, Timestamp
ou Libelle, par ordre ascendant ou descendant ?

Dans la documentation PHP, je vois la fonction array_multisort
(http://be.php.net/manual/fr/function.array-multisort.php), mais j'ai du
mal à voir vraiment comment l'appliquer dans le cas de l'exemple
ci-dessus.

Pourriez-vous m'aider en me donnant la manière d'utiliser cette fonction
(s'il s'agit de la bonne fonction, bien entendu) dans le cas de l'exemple
ci-dessus ?

D'avance un grand merci pour votre aide !

--
----------------------------------------
Bruno Baguette - bouchon@alussinan.org

Build A Brighter Lamp :: Linux Apache {middleware} PostgreSQL

3 réponses

Avatar
Jean-Marc Molina
Je suppose que ton tableau est issu d'une base de données, il faut alors
utiliser la directive SQL ORDER BY sur le champ approprié.

JM

--
Europe > France > Lyon
Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
Avatar
pjvouette
Bruno Baguette wrote:
Bonjour,


Bonjour,

J'ai un tableau multi-colonnes qui est remplit comme suit :

$ListeDescriptions[$Compteur]['IdActivite'];
$ListeDescriptions[$Compteur]['Timestamp']69378906;
$ListeDescriptions[$Compteur]['Libelle']='Le libelle de
l'activité';

Comment-puis je trier le tableau selon le champ IdActivite, Timestamp
ou Libelle, par ordre ascendant ou descendant ?


usort te laisse toute liberté sur la manière de trier.

Exemples :

// IdActivite croissants
usort($ListeDescriptions, create_function('$a,$b', "return
$a['IdActivite']-$b['IdActivite'];")) ;

// IdActivite décroissants
usort($ListeDescriptions, create_function('$a,$b', "return
$b['IdActivite']-$a['IdActivite'];")) ;

// Libellé croissants
usort($ListeDescriptions, create_function('$a,$b', "return
strcmp($a['Libelle'],$b['Libelle']);")) ;

// Libellé décroissants
usort($ListeDescriptions, create_function('$a,$b', "return
-strcmp($a['Libelle'],$b['Libelle']);")) ;

pierre-jean

Avatar
Christophe PEREZ
Le Sat, 22 Nov 2003 12:20:32 +0000, pjvouette a écrit:

usort te laisse toute liberté sur la manière de trier.


Oui, tout ça pour une même valeur de $Compteur :-)

Personnellement, j'ai eu le même problème que Bruno récemment, et j'ai du
me résoudre à remplacer mes :
$ListeDescriptions[$Compteur]['IdActivite'];
$ListeDescriptions[$Compteur]['Timestamp']69378906;
$ListeDescriptions[$Compteur]['Libelle']='Le libelle de


par :
$ListeDescriptions_IdActivite[$Compteur];
$ListeDescriptions_Timestamp[$Compteur]69378906;
$ListeDescriptions_Libelle[$Compteur]='Le libelle de

Comme ça, un
multisort($ListeDescriptions_IdActivite, $ListeDescriptions_Timestamp,
$ListeDescriptions_Libelle[$Compteur]);
fonctionne, au moins dans mon cas.
Attention, bien choisir le premier tableau à trier puisque les autres
seront triés en correspondance.

--
Christophe PEREZ
Écrivez moi sans _faute !