Tri - Tableau associatif 2 dimension - PHP

Fermé
Boutchou - 26 août 2009 à 14:08
pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 - 29 août 2009 à 17:11
Bonjour,

Après plusieurs heures de recherches & ne trouvant pas de solution à mon problème, je me tourne vers vous...

J'ai un tableau associatif comme ci dessous. Le souci est que j'aimerai pouvoir trier (afficher) les différents enregistrement en fonction des champs : dir puis cs & ensuire par nom. j'ai testé avec sort & j'en passe, mais cela ne m'aide pas... (je m'y prend peut etre mal)
Array (
[NOM1 PRENOM1]
=> Array (
[nom] => NOM1
[prenom] => PRENOM1
[dir] => DIR1
[cs] => CS1
[28/12/2008] => 11.88
[28/02/2009] => 11.05
[28/03/2009] => 10.27
[28/05/2009] => 0
[28/06/2009] => 0
[28/09/2008] => 0
)
[NOM2 PRENOM2]
=> Array (
[nom] => NOM2
[prenom] => PRENOM2
[dir] => DIR1
[cs] => CS2
[28/12/2008] => 11.88
[28/02/2009] => 10.27
[28/03/2009] => 10.27
[28/05/2009] => 0
[28/06/2009] => 0
[28/09/2008] => 0
)
)

Pour afficher mes valeurs, j'utilise ceci :

foreach($Tab as $cle1 => $valeur1)
{
echo "Nom personne :" . $cle1 . "<br />";
foreach ($valeur1 as $cle2=>$valeur2)
{
echo "Clé : ".$cle2 .", Valeur: " . $valeur2 . "<br />\n";
}
echo "<br \>";
echo "<br \>";
}

Pour info, la version php du serveur est la : php-5.1.6

D'avance merci pour votre aide. Etant principalement Administrateur système, j'avoue être un peu perdu à ce niveau.


Boutchou
A voir également:

5 réponses

Archeus01 Messages postés 1567 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 447
26 août 2009 à 14:24
Bonjour, as-tu regardé les commentaires sur la page https://www.php.net/ksort ? Le dernier commentaire entre auyre (celui posté par serpro at gmail dot com) répond à ta question.
Inutile de réinventer la roue...
Cdt,
2
pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
26 août 2009 à 15:13
Tu peux aussi essayer de rajouter une colonne qui serait la concaténation des trois autres dans l'ordre souhaité pour le tri... Puis tu tries sur cette colonne.
Il faut par contre t'assurer que chaque "champs" de ta concaténation a toujours la même longueur en faisant un pad par exemple, sous peine de résultat incorrect.
1
Ah, en effet, celui là, je n'avais pas vu... :(

Cela fonctionne bien pour une 1 colonne. je vais essayer de modifier ça pour le faire sur trois colonnes...

=> Sur CS, DIR & NOM ...

ça me promet du sport :)

Courage, courage...


Merci à toi,



Boutchou
0
Merci à toi, bien vu pour la concaténation, j'ai donc collé les champs : DIR - CS - NOM

=> un tit remplacement des espaces par rien.

& cela me les classes suffisament correctement.



Il me reste plus qu'à sortir tout ça en excel avec : require_once 'Spreadsheet/Excel/Writer.php'

& on en parle plus :)


Automatisation power :)


Merci à vous pour votre aide,


Boutchou
0
pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
27 août 2009 à 17:39
Hello !

Content d'avoir pu aider, mais plutôt que remplacer les espaces par rien, j'aurais vu un remplacement des riens par des espaces. Cela dit si le classement n'a pas besoin d'être parfait, c'est suffisant.

Bonne continuation.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Archeus01 Messages postés 1567 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 447
28 août 2009 à 11:09
Bonjour,

Je retombe la dessus et la fonction me revient soudain : https://www.php.net/array_multisort
Le tri sera juste mais le temps d'exécution plus long.

Cdt,
0
pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
29 août 2009 à 17:11
Je suis dégoûté de ne pas y avoir pensé, d'autant que je l'utilise dans un des derniers scripts que j'ai développé... J'ai une mémoire impressionnante !
0