Tris PHP sur tableaux multidimensionnels


nza2k
WRInaute impliqué
WRInaute impliqué
 
Messages: 771
Inscription: 16 Jan 2004

Tris PHP sur tableaux multidimensionnels

Message le Dim Fév 28, 2010 3:11

Bonjour... ou Bonne nuit,

Question bizarre pour un samedi soir à 3H du mat, mais bon...

Prenons un exemple de tableau multidimensionnel php :

$tab[region][1][population] = 100
$tab[region][2][population] = 50
$tab[region][3][population] = 30
$tab[region][4][population] = 200

Pour l'exemple, ce tableau ne comprend que deux valeurs.
Bien entendu, imaginez un tableau avec plusieurs régions, et plusieurs infos par régions (nom, nombre de départements, superficie, etc...).

J'aimerais pouvoir trier le tableau de l'exemple par ordre croissant de population.

Comment je fais ça de façon efficace ?

Merci par avance pour votre aide


Julia41
WRInaute passionné
WRInaute passionné
 
Messages: 1765
Inscription: 31 Aoû 2007

Re: Tris PHP sur tableaux multidimensionnels

Message le Dim Fév 28, 2010 3:32

Pas sûr que ça puisse t'aider, mais pour trier en croissant, la fonction array_multisort permet de jouer un peu :
fr2.php.net/manual/en/function.array-multisort.php

Après ça dépends un peu, mais peut-être qu'à la génération, ça peut être plus pratique.

chris81
WRInaute discret
WRInaute discret
 
Messages: 184
Inscription: 8 Mar 2005

Re: Tris PHP sur tableaux multidimensionnels

Message le Dim Fév 28, 2010 8:33

ça m'intéresse aussi !
si quelqu'un à la réponse


dorian53
WRInaute passionné
WRInaute passionné
 
Messages: 2217
Inscription: 10 Avr 2005

Re: Tris PHP sur tableaux multidimensionnels

Message le Dim Fév 28, 2010 14:20

Quand tu construis ton premier tableau, tu n'as pas moyen d'en créer un annexe avec juste la population ?

Code: Tout sélectionner
$tab[region][1][population] = 100
$tab[region][2][population] = 50
$tab[region][3][population] = 30
$tab[region][4][population] = 200

et

Code: Tout sélectionner
$tab2[region] = 100
$tab2[region] = 50
$tab2[region] = 30
$tab2[region] = 200


Après tu fais juste un asort($tab2) et puis tu réalises le traitement que tu veux avec un foreach dessus (construction d'un nouveau tableau trié par exemple ou directement l'opération souhaitée) ?


Nic'O
WRInaute discret
WRInaute discret
 
Messages: 181
Inscription: 13 Mai 2009

Re: Tris PHP sur tableaux multidimensionnels

Message le Lun Mar 01, 2010 9:25

j'avais déjà été confronté au problème, après moultes essais, j'avais réussi avec ceci .

Code: Tout sélectionner
      function array_sort($array, $key)
      {
         for ($i = 0; $i < sizeof($array); $i++) {
            $sort_values[$i] = $array[$i][$key];
         }
         arsort ($sort_values);
         reset ($sort_values);
         while (list ($arr_key, $arr_val) = each ($sort_values)) {
            $sorted_arr[] = $array[$arr_key];
         }
         return $sorted_arr;
      }
      
      $results = array_sort($tonarray,'nom_de_la_clef_comme_population');


nza2k
WRInaute impliqué
WRInaute impliqué
 
Messages: 771
Inscription: 16 Jan 2004

Re: Tris PHP sur tableaux multidimensionnels

Message le Lun Mar 01, 2010 17:06

Merci à tous pour vos réponses !

Voici comment je m'en suis sorti, grâce à votre aide :

Code: Tout sélectionner
$tab[region][1][population] = 100;
$tab[region][2][population] = 50;
$tab[region][3][population] = 30;
$tab[region][4][population] = 200;

$population[1] = 100;
$population[2] = 50;
$population[3] = 30;
$population[4] = 200;


array_multisort($population, $tab[region]);



Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités