Trier un tableau à plusieurs dimensions

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Trier un tableau à plusieurs dimensions

par Ripat » 24 juil. 2007, 16:08

Pour de gros tableaux ou pour un script où le gain de temps a de l'importance, préférer array_multisort() de l'ordre de 5 fois plus rapide.

Des tris de deuxième ordre ou troisième ordre sont également faciles à mettre en oeuvre (trier sur le nom, pour deux noms similaires, sous-trier sur l'âge décroissant etc...).

$cleTriNom = $cleTriAge = array();
foreach ($tableau as $v){
  $cleTriNom[] = $v['nom'];
  $cleTriAge[] = $v['age'];
}
array_multisort($cleTriNom, SORT_ASC, $cleTriAge, SORT_DESC, $tableau);

par Genova » 24 juil. 2007, 13:39

Pas du chercher beaucoup, puisque le même problème a été traité il y a une heure ;)

usort() est ton amie :
function usort_callback($a, $b)
{
   return (strcmp($a['Nom'], $b['Nom']));
}

usort($tab, 'usort_callback');

Trier un tableau à plusieurs dimensions

par rozierromain » 24 juil. 2007, 13:36

salut à tous

malgré mes recherches sur le site, je n'arrive pas à faire quelquechose qui sera élémentaire pour vous : trier un tableau à plusieurs colones:

il est de la forme :
$tab[1]['Nom'] = "Durand";
$tab[1]['age']= "21";
$tab[2]['Nom'] = "Dupont";
$tab[2]['age'] = "32";
je voudrais faire un tri alphabétique sur la colonne "Nom".

Je voudrais que ça donne :
$tab[1]['Nom'] = "Dupont";
$tab[1]['age']= "32";
$tab[2]['Nom'] = "Durand";
$tab[2]['age'] = "21";
Merci de m'aider, si possible avec du code pour que je puisse m'en inspirer