PHP : Trier un tableau suivant la valeur d’une clé
20 mai
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 :
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.
Exactement ce que je cherchais, perfect !
ça marche impec merci
Un grand classique parmi la dizaine de façon de trier des tableaux via php