Tris PHP sur tableaux multidimensionnels

WRInaute impliqué
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
 
WRInaute passionné
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.
 
WRInaute passionné
Quand tu construis ton premier tableau, tu n'as pas moyen d'en créer un annexe avec juste la population ?

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

Code:
$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) ?
 
WRInaute discret
j'avais déjà été confronté au problème, après moultes essais, j'avais réussi avec ceci .

Code:
		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');
 
WRInaute impliqué
Merci à tous pour vos réponses !

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

Code:
$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]);
 
Discussions similaires
Haut