Position actuelle: Accueil> Derniers articles> Comment trier les tableaux à l'aide de la fonction Arsort et laisser les noms clés du tableau inchangé? Analyse détaillée

Comment trier les tableaux à l'aide de la fonction Arsort et laisser les noms clés du tableau inchangé? Analyse détaillée

gitbox 2025-06-15

1. Présentation de la fonction arsort ()

La fonction Arsort () est utilisée pour trier les tableaux dans l'ordre descendant par valeurs. Il trie non seulement par la valeur du tableau, mais préserve également les noms clés du tableau d'origine. Par conséquent, même si la valeur change, le nom de clé reste cohérent avec la position dans le tableau d'origine.

Prototype de fonction

 bool arsort ( array &$array , int $sort_flags = SORT_REGULAR )
  • Array & $ Array : le tableau à trier.

  • int $ sort_flags : paramètre facultatif, définit les règles de tri. Les règles de tri communes incluent Sort_Regular (par défaut), SORT_NUMERIC , SORT_STRING , etc.

Valeur de retour

Renvoie une valeur booléenne. Retour True si le tri est réussi; Sinon, renvoyez false .


2. Utilisation de base

Voici un exemple simple qui montre comment utiliser la fonction Arsort () pour trier un tableau dans l'ordre descendant et laisser le nom de clé inchangé.

 <?php
$array = [
    "apple" => 5,
    "banana" => 2,
    "orange" => 8,
    "grape" => 1
];

arsort($array); // Trier descendant

print_r($array);
?>

Résultat de sortie:

 Array
(
    [orange] => 8
    [apple] => 5
    [banana] => 2
    [grape] => 1
)

Comme indiqué ci-dessus, Arsort () trie le tableau dans l'ordre descendant des valeurs, et les noms clés (comme Apple , Banana ) restent inchangés.


3. Comment spécifier les règles de tri lors de l'utilisation d'Arsort () ?

Arsort () prend en charge la spécification des collations via le paramètre SORT_FLAGS . Nous pouvons choisir différentes méthodes de tri, les plus courantes sont Sort_Numeric et Sort_string .

Exemple 1: Utilisez Sort_numeric pour le tri numérique

 <?php
$array = [
    "a" => 10,
    "b" => 1,
    "c" => 3
];

arsort($array, SORT_NUMERIC); // Trier par numéro

print_r($array);
?>

Résultat de sortie:

 Array
(
    [a] => 10
    [c] => 3
    [b] => 1
)

Exemple 2: Utilisez Sort_string pour le tri des chaînes

 <?php
$array = [
    "apple" => "green",
    "banana" => "yellow",
    "orange" => "orange"
];

arsort($array, SORT_STRING); // Trier par chaîne

print_r($array);
?>

Résultat de sortie:

 Array
(
    [orange] => orange
    [banana] => yellow
    [apple] => green
)

4. Scénarios d'application d' Arsort ()

Scène 1: Triez la liste des étudiants par notes

Supposons que nous ayons un éventail de notes d'étudiants, nous voulons trier les étudiants en ordre décroissant en fonction des notes et conserver les noms et notes des étudiants correspondants.

 <?php
$students = [
    "John" => 85,
    "Jane" => 92,
    "Tom" => 76,
    "Lucy" => 89
];

arsort($students); // 根据成绩Trier descendant

print_r($students);
?>

Résultat de sortie:

 Array
(
    [Jane] => 92
    [Lucy] => 89
    [John] => 85
    [Tom] => 76
)

Cette approche est très adaptée aux scénarios où les données doivent être triées en fonction de certains critères (tels que les notes, les scores, etc.).


5. Erreurs courantes et débogage

  1. Tableau de référence non passé <br> Si vous ne transmettez pas le tableau par référence, la fonction Arsort () ne modifiera pas le tableau d'origine.

 <?php
$array = [
    "apple" => 5,
    "banana" => 2
];

arsort($array); // Pas de citations ici,Le tableau d&#39;origine ne sera pas modifié

print_r($array); // Sortir le tableau d&#39;origine
?>

Résultat de sortie:

 Array
(
    [apple] => 5
    [banana] => 2
)

La solution consiste à passer le tableau par référence.

 arsort($array); // Utilisez des références pour modifier directement les tableaux
  1. Sort_flags Erreur du paramètre <br> Dans certains cas, le mauvais paramètre SORT_FLAGS entraînera un pire résultat que prévu. Par exemple, si l'élément contient des nombres lors du tri à l'aide de sort_string , un comportement de tri inattendu peut se produire.