Tri - Tableau associatif 2 dimension - PHP

Boutchou -  
pyschopathe Messages postés 1974 Date d'inscription   Statut Membre Dernière intervention   -
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 1572 Date d'inscription   Statut Membre Dernière intervention   452
 
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 1974 Date d'inscription   Statut Membre Dernière intervention   135
 
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
Boutchou
 
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
Boutchou
 
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 1974 Date d'inscription   Statut Membre Dernière intervention   135
 
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 1572 Date d'inscription   Statut Membre Dernière intervention   452
 
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 1974 Date d'inscription   Statut Membre Dernière intervention   135
 
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