PHP : Trier un tableau suivant la valeur d’une clé

20 mai

PHP : Trier un tableau suivant la valeur d'une clé

Aujourd’hui un petit billet concernant le PHP et plus particulièrement le tri au sein des tableaux. Nous allons voir comment trier un tableau suivant la valeur associée à une clef.

L’objectif est ici de trier un tableau suivant la valeur d’une clé, cela s’adresse donc à un tableau multidimensionnel (deux dimensions pour être précis), pour ce faire nous utiliserons la fonction usort.

Prenons par exemple ce tableau et admettons que nous souhaitons le tirer par rapport aux valeurs de la clé « val »

$a = array(
'0' => array('val' => 10, 'text' => 'mon texte 10'),
'1' => array('val' => 1, 'text' => 'mon texte 1'),
'2' => array('val' => 3, 'text' => 'mon texte 3'),
'3' => array('val' => -2, 'text' => 'mon texte -2'),
'4' => array('val' => 8, 'text' => 'mon texte 8'),
'5' => array('val' => 50, 'text' => 'mon texte 50'),
'6' => array('val' => 5, 'text' => 'mon texte 5'),
);

Nous allons donc utiliser la fonction usort qui permet de trier un tableau suivant une fonction que l’on définit. Nous allons donc créer une fonction comparant les clés.

	function fonctionComparaison($a, $b){
		return $a['val'] > $b['val'];
	}

Puis nous l’appelons de la manière suivante :

usort($a, 'fonctionComparaison');

Pour la même utilisation au sein d’une classe (si « fonctionComparaison » était une des méthodes de la classe), le second paramètre est alors un tableau :

usort($a, array($this,'fonctionComparaison'));

Et voici le résultat :

PHP : Trier un tableau suivant la valeur d'une clé

A noter que les clés originales ont été remplacées par de nouvelles. Pour conserver les clés, il aurait fallu utiliser la fonction uasort qui fonctionne exactement de la même manière, mais qui conserve les clés.

Photo

3 Réponses pour “PHP : Trier un tableau suivant la valeur d’une clé”

  1. Aymeric 8 avril 2014 à 14 h 30 min #

    Exactement ce que je cherchais, perfect !

  2. yro 11 mars 2015 à 17 h 58 min #

    ça marche impec merci :)

  3. feodor 14 juillet 2017 à 19 h 57 min #

    Un grand classique parmi la dizaine de façon de trier des tableaux via php