Tri de tableaux associatifs par valeur numérique et clé
Ce dilemme de programmation implique un tableau associatif avec des valeurs numériques, ciblant spécifiquement la création d'une liste où les balises sont triées d'abord par leur nombre d'occurrences décroissant, puis par leur ordre alphabétique croissant.
Définition du problème
Considérons un exemple de tableau :
$arrTags = [ 'mango' => 2, 'orange' => 4, 'apple' => 2, 'banana' => 3 ];
Le résultat souhaité pour ce tableau est une liste triée :
orange (4) banana (3) apple (2) mango (2)
La fonction PHP native arsort() échoue car elle donne la priorité à la mangue avant la pomme en raison de sa dominance alphabétique.
Solution
En utilisant les fonctions array_keys() et array_values(), ce problème peut être résolu avec une plus grande efficacité. Le code suivant illustre la solution :
array_multisort(array_values($arrTags), SORT_DESC, array_keys($arrTags), SORT_ASC, $arrTags);
Cette ligne unique élimine le besoin d'une boucle et effectue le tri nécessaire en extrayant d'abord les valeurs du tableau dans un tableau triable à l'aide de array_values(). Par la suite, les valeurs sont triées par ordre décroissant à l'aide de SORT_DESC. Parallèlement, les clés correspondantes sont extraites à l'aide de array_keys() et triées par ordre croissant à l'aide de SORT_ASC. Les résultats sont ensuite recombinés dans le tableau d'origine, en utilisant le paramètre $arrTags fourni.
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!