Les tableaux en PHP fournissent une structure de données puissante pour organiser et stocker les données. Cependant, trier des tableaux multidimensionnels en fonction d'une valeur spécifique dans un tableau interne peut être une tâche difficile.
Considérons une table de hachage PHP avec la structure de données suivante :
[ [ "type" => "suite", "name" => "A-Name" ], [ "type" => "suite", "name" => "C-Name" ], [ "type" => "suite", "name" => "B-Name" ] ]
L'objectif est de trier cette structure de données en fonction de la clé "name" dans le tableau interne.
Diverses fonctions PHP peuvent être utilisées pour trier les tableaux :
Cependant, aucune de ces fonctions ne prend directement en charge le tri basé sur une clé dans un tableau interne.
Pour surmonter cette limitation, une fonction de tri personnalisée peut être définie pour comparer les valeurs souhaitées dans le tableau interne. Cela peut être accompli en utilisant la fonction usort.
<code class="php">function cmp($a, $b) { return $b['name'] - $a['name']; }</code>
Cette fonction compare la clé "name" dans les tableaux internes et renvoie une valeur négative si le nom du premier tableau est supérieur au le nom du deuxième tableau.
Une fois la fonction de comparaison définie, elle peut être utilisée pour trier le tableau à l'aide de la fonction usort.
<code class="php">usort($mydata, "cmp");</code>
Une solution alternative à la fonction de tri personnalisée consiste à créer un nouveau tableau contenant uniquement les valeurs à trier. Cela peut être fait avec une boucle imbriquée et une instruction conditionnelle.
<code class="php">function array_sort($array, $on, $order=SORT_ASC) { // ... return $new_array; }</code>
Cette fonction prend en compte le tableau à trier, la clé sur laquelle trier et un ordre facultatif (croissant ou décroissant). Il renvoie un nouveau tableau avec les données triées.
La fonction array_sort peut être utilisée comme suit :
<code class="php">$mydata = [ ['type' => 'suite', 'name' => 'A-Name'], ['type' => 'suite', 'name' => 'C-Name'], ['type' => 'suite', 'name' => 'B-Name'] ]; $sorted_data = array_sort($mydata, 'name', SORT_ASC); print_r($sorted_data);</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!