Position actuelle: Accueil> Derniers articles> Comment trier les tableaux de points flottants dans l'ordre descendant à l'aide de RSORT? Quelles sont les précautions?

Comment trier les tableaux de points flottants dans l'ordre descendant à l'aide de RSORT? Quelles sont les précautions?

gitbox 2025-06-17

En PHP, la fonction RSORT peut être utilisée pour trier les tableaux dans l'ordre descendant. Par défaut, il est trié par la valeur du tableau et est généralement utilisé pour organiser des nombres, des chaînes, etc. Cependant, lors de l'utilisation, il y a certains détails et précautions qui nécessitent une attention particulière.

1. Utilisation de base de la fonction RSORT

La syntaxe de base de la fonction RSORT est la suivante:

 bool rsort(array &$array, int $sort_flags = SORT_REGULAR)
  • $ Array : le tableau qui doit être trié.

  • $ SORT_FLAGS : Les moyens courants de trier sont Sort_Regular (par défaut, triés dans l'ordre normal) et Sort_Numeric (triés par valeur numérique).

2. Utilisez RSORT pour trier les tableaux de points flottants dans l'ordre descendant

Pour les tableaux de points flottants, nous pouvons utiliser RSORT directement pour les trier par ordre décroissant. Par exemple:

 <?php
$numbers = array(3.14, 1.41, 2.71, 4.67, 1.73);
rsort($numbers);
print_r($numbers);
?>

Résultat de sortie:

 Array
(
    [0] => 4.67
    [1] => 3.14
    [2] => 2.71
    [3] => 1.73
    [4] => 1.41
)

Comme indiqué ci-dessus, RSORT trie avec succès le tableau des numéros de points flottants dans l'ordre descendant.

3. Triez un tableau de points flottants en utilisant Sort_numeric

Bien que RSORT puisse trier correctement les numéros de points flottants dans l'ordre descendant par défaut, si vous devez spécifier le tri par taille numérique, vous pouvez utiliser l'indicateur Sort_numeric . Par exemple:

 <?php
$numbers = array(3.14, 1.41, 2.71, 4.67, 1.73);
rsort($numbers, SORT_NUMERIC);
print_r($numbers);
?>

Cette méthode indique clairement que nous voulons trier par la taille de la valeur numérique, afin que nous puissions éviter certains résultats imprévus, en particulier lors du tri mélange les nombres et les chaînes.

4. Précautions importantes

(1) Le tableau sera trié en place

RSORT trie le passage passé en place en place. Autrement dit, le tri modifiera directement le tableau d'origine au lieu de retourner un nouveau tableau. Si vous ne souhaitez pas modifier le tableau d'origine, vous pouvez d'abord copier le tableau d'origine, puis trier le tableau copié. Par exemple:

 <?php
$numbers = array(3.14, 1.41, 2.71, 4.67, 1.73);
rsort($numbers_copy);
print_r($numbers);       // Tableau d&#39;origine
print_r($numbers_copy);  // Trier le tableau
?>

(2) la précision des nombres de points flottants

La représentation des nombres à virgule flottante est précise limitée, vous pouvez donc rencontrer différentes situations lors du tri. Par exemple:

 <?php
$numbers = array(1.0000000001, 1.0000000002, 1.0000000003);
rsort($numbers);
print_r($numbers);
?>

Dans certains cas, deux nombres de points flottants qui semblent très similaires peuvent être triés dans différents ordres en raison de problèmes de précision. Pour éviter cela, vous pouvez envisager de garder les nombres de points flottants à une certaine précision avant de les trier.

(3) Éléments nuls et non nucères

Lors du tri des réseaux de points flottants, si le tableau contient des éléments nuls ou non numériques (tels que des chaînes), RSORT mettra ces éléments à la fin du tableau et le processus de tri peut être affecté. Si vous avez besoin d'un type plus détaillé, il est préférable de filtrer d'abord ces éléments non valides.

Par exemple:

 <?php
$numbers = array(3.14, NULL, "string", 4.67, 2.71);
$numbers = array_filter($numbers, 'is_numeric');  // Filtrez des éléments non numeriques
rsort($numbers);
print_r($numbers);
?>

Résultat de sortie:

 Array
(
    [0] => 4.67
    [1] => 3.14
    [2] => 2.71
)

(4) Indexation des problèmes après tri

RSORT réorganise l'index du tableau et perd le nom de clé d'origine. Si vous devez conserver les noms de clés d'origine, vous pouvez utiliser Arsort pour trier dans l'ordre descendant, ou utiliser array_values ​​() pour obtenir le tableau réindexé avant le tri.

 <?php
$numbers = array(3.14, 1.41, 2.71, 4.67, 1.73);
rsort($numbers);
$numbers_with_keys = array_keys($numbers);
print_r($numbers_with_keys);
?>

5. Résumé

  • RSORT est une fonction simple et facile à utiliser pour le tri des tableaux de nombres de points flottants dans l'ordre descendant.

  • Par défaut, RSORT peut gérer correctement le tri des numéros à virgule flottante, et l'indicateur Sort_Numeric peut être utilisé pour spécifier explicitement le tri par valeur numérique.

  • Faites attention à la modification in situ du tableau, de la précision des points flottants, des éléments non numériques et des modifications des indices après tri.

En comprenant ces détails, vous pouvez être plus flexible avec RSORT pour trier les réseaux de points flottants dans l'ordre descendant et vous assurer que les résultats de tri sont conformes à vos attentes.