Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/04/2011, 08h08   #1
Invité régulier
 
Homme
Inscription : avril 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 14
Points : 5
Points : 5
Par défaut Trier un array

Bonjour

Je souhaiterais trier un tableau (array qui associe une clé à une valeur) sur les valeurs, mais en gardant l'association. Un exemple valant mieux qu'un long discours :
{1->3;2->1;3->2}
doit devenir
{2->1;3->2;1->3}.

Ce que j'ai fait :
Code :
1
2
3
4
5
6
7
foreach ($adherents as $cle => $val) {
		echo 'cle : '.$cle.', val : '.$val.'<br>';
}
sort($adherents);
foreach ($adherents as $cle => $val) {
		echo 'cle : '.$cle.', val : '.$val.'<br>';
}
pour trier le tableau adherents (dans ce tableau, en clé un numéro d'adhérent, en valeur un montant).
Ce que me renvoient les echos :
Citation:
cle : 1, val : 230
cle : 2, val : 533
cle : 3, val : 1176
cle : 4, val : 33
Pour le premier (ce qui est juste, bonnes clés bonnes valeurs)

Pour le deuxième :
Citation:
cle : 0, val : 33
cle : 1, val : 230
cle : 2, val : 533
cle : 3, val : 1176
Ce qui est bien trié mais n'associe pas les bonnes clés aux valeurs.

Comment faire ?
Merci !
Derbie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 08h32   #2
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 802
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 802
Points : 1 515
Points : 1 515
Le parcours d'un array se fait via l'index, c'est la référence.
Donc tu ne peux modifier l'ordre d'un array sans modifier ses clés !
C'est comme si tu disais que tu voulais ordonner la vie selon les âges (âge = index) mais en mettant 20ans avant 19ans, de ce fait ton programme de vie serait assez bizarre puisque tu gagnerai 2 ans (18->20), puis tu en perdrai 1 (20->19) pour ensuite en regagner 2 (19->21)...

{1->3;2->1;3->2}
deviendra forcement :
{0->1;1->2;2->3}
(Et bien 0 et non 1, en informatique on ne laisse pas de la place n'importe où, les tableaux sont indexés à partir de 0. Même si PHP doit tout de même faire une réindexation derrière pour les tableaux faisant des sauts d'index, c'est plus propre !)
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 26/04/2011, 08h38   #3
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
asort fait ce que tu cherches

Citation:
Envoyé par transgohan Voir le message
Le parcours d'un array se fait via l'index, c'est la référence.
Donc tu ne peux modifier l'ordre d'un array sans modifier ses clés !
C'est comme si tu disais que tu voulais ordonner la vie selon les âges (âge = index) mais en mettant 20ans avant 19ans, de ce fait ton programme de vie serait assez bizarre puisque tu gagnerai 2 ans (18->20), puis tu en perdrai 1 (20->19) pour ensuite en regagner 2 (19->21)...

{1->3;2->1;3->2}
deviendra forcement :
{0->1;1->2;2->3}
(Et bien 0 et non 1, en informatique on ne laisse pas de la place n'importe où, les tableaux sont indexés à partir de 0. Même si PHP doit tout de même faire une réindexation derrière pour les tableaux faisant des sauts d'index, c'est plus propre !)
Tu fais bien ce que tu veux avec les tableaux. Clé textuel , numérique , avec ou sans trou ... C'est pour ça que le foreach existe
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 09h03   #4
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 802
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 802
Points : 1 515
Points : 1 515
Mouarf je viens encore d'apprendre un truc bien dégueulasse de PHP. :p
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 26/04/2011, 09h21   #5
Invité régulier
 
Homme
Inscription : avril 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 14
Points : 5
Points : 5
ça marche, merci beaucoup pour vos réponses !
Derbie est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h57.


 
 
 
 
Partenaires

Hébergement Web