Maison  >  Article  >  développement back-end  >  Comment trier un tableau associatif par valeur numérique et clé par ordre alphabétique ?

Comment trier un tableau associatif par valeur numérique et clé par ordre alphabétique ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-11 07:48:03909parcourir

How to Sort an Associative Array by Numeric Value and Key Alphabetically?

Tri des tableaux par valeurs numériques et clés

En programmation, des situations surviennent où nous devons trier des tableaux associatifs selon des critères spécifiques. Un de ces scénarios consiste à trier un tableau par valeurs numériques, puis par clés.

Supposons que nous ayons un tableau contenant des clés de chaîne et des valeurs numériques représentant les occurrences de balises :

$arrTags = [
    'mango' => 2,
    'orange' => 4,
    'apple' => 2,
    'banana' => 3
];

Notre objectif est d'afficher les balises d'une liste avec l'occurrence la plus élevée en premier, et en cas d'occurrences égales, trier les noms de balises par ordre alphabétique. Cela entraînerait :

orange (4)
banana (3)
apple (2)
mango (2)

Bien que la fonction arsort() puisse initialement trier les valeurs, elle ne parviendra pas à maintenir l'ordre alphabétique des clés lorsque plusieurs valeurs sont égales.

Comme suggéré par Scott Saunders, nous pouvons utiliser les fonctions array_keys() et array_values() pour surmonter cette limitation :

array_multisort(array_values($arrTags), SORT_DESC, array_keys($arrTags), SORT_ASC, $arrTags);

Cette combinaison de fonctions nous permet de manipuler directement les clés et les valeurs du tableau, pour finalement obtenir le comportement de tri souhaité. En triant les valeurs par ordre décroissant puis en triant les clés par ordre croissant, nous obtenons le résultat souhaité.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn